I would like to click on the object and change its attribute value and save it by updating object with new attribute value.
I try to achieve it with x-editable however it gives me an issue as per the picture below. I believe it is sth to do with my url defined in main.js script.
Any ideas how can I solve it ? I would like to use django model save function because I use it for other further reasons.
This is when I click on substage value and x-editable jquery works:
but it does not SAVE new value:
Terminal returns:
[08/May/2016 17:06:03]"POST /post HTTP/1.1" 404 2027
Below is part of my templates code:
{% for substage in trsubstage.substages_related %}
{% for zone in zones %}
{% if zone == substage.stage.zone %}
<td style="width:40px" align="center">
<div id="substage">
<a href="#" data-pk="{{ substage.id }}" data-type="text" >
{{ substage.substage_value }}</a>
</div>
</td>
{% endif %}
{% endfor %}
{% endfor %}
here is my main.js code:
$(document).ready(function() {
//toggle `popup` / `inline` mode
$.fn.editable.defaults.mode = 'popup';
$('#substage a').editable({
type: 'text',
name: 'username',
url: '/post',
title: 'Enter username'
});
});
here are my urls:
urlpatterns = [
url(r'^$', views.MainStatusView.as_view(), name='mainstatus'),
]
and here is my model Substage:
class SubStage(models.Model):
tablerow_substage = models.ForeignKey(TRSubStage)
stage = models.ForeignKey(Stage)
substage_value = models.PositiveSmallIntegerField(default=0)
created_date = models.DateField(auto_now_add= True)
created_time = models.TimeField(auto_now_add= True)
def __str__(self):
return '%s.%s.%s' % (self.stage.zone,
self.stage.tablerow_stage.stage_name,
self.tablerow_substage.substage_num)
def __init__(self, *args, **kwargs):
super(SubStage, self).__init__(*args, **kwargs)
self.value_original = self.substage_value
def save(self, **kwargs):
with transaction.atomic():
response = super(SubStage, self).save(**kwargs)
if self.value_original != self.substage_value:
substage_log = SubStageLog()
substage_log.substage = self
substage_log.substage_value = self.value_original
substage_log.save()
return response
class SubStageLog(models.Model):
substage = models.ForeignKey(SubStage)
substage_value = models.PositiveSmallIntegerField(default=0)
update_date = models.DateField(auto_now_add= True)
update_time = models.TimeField(auto_now_add= True)
def __str__(self):
return '%s | %s | %s' % (self.substage, self.update_date, self.update_time)
# to change str(self.id) to self.slug (but I need to add slug attribute to RoomLog)
def get_absolute_url(self):
return '/mods/' + str(self.id) + '/'
You do not have a url called "post" in your urls.py so your js functions but the request has no idea where to send your data.