我的问题是我有一个“分配”对象列表,它们都有一个名为“状态”的字段。状态为 true 或 false,用户可以通过单击特定分配的复选框来选择更改值。
我目前的解决方案是这样的:
课程详情.html:
{% for assignment in assignments %}
<tr>
<td scope="row" style="text-align: center">
<form>
{% csrf_token %}
{% if assignment.status %}
<input type="checkbox" checked onclick='assignmentFinish("False","{{assignment.id}}")'>
{% else %}
<input type="checkbox" onclick='assignmentFinish("True","{{assignment.id}}")'>
{% endif %}
</form>
</td>
<td><h5><span class="badge badge-{{assignment.module.colour}}">{{assignment.module}}</span></td>
<td><a href="{{ assignment.assigmentFile.url }}">{{assignment.title}}</a></td>
<td>{{assignment.deadline}}</td>
...
</tr>
{% endfor %}
阿贾克斯代码:
function assignmentFinish(value,assignment) {
link = "{% url 'uni:finish-assignment' %}";
$.ajax({
type:'POST',
url: link,
data:{
status: value,
assignmentID: assignment,
csrfmiddlewaretoken:$('input[name=csrfmiddlewaretoken]').val()
},
success: function(){
}
});
}
意见.py:
def finishAssignment(request):
# Get the product that user has wished for
assignmentID = request.POST['assignmentID']
status = request.POST['status']
assignment = Assignment.objects.get(pk=assignmentID)
print(status)
if status == 'True':
print("saving to true")
assignment.status = True
else:
print("saving to false")
assignment.status = False
assignment.save()
return HttpResponse('')
enter code here
它表明正在调用 ajax 请求,但打印语句应该在 true 和 false 之间交替。出现这种情况的原因可能是因为在第一次将新值保存到数据库后,显示复选框的页面上的信息没有更新。我该如何解决?
缥缈止盈
相关分类