我的表格的每一行都有一个复选框。我的目标是选中/取消选中复选框并在view.py中更新数据库。对于这个简单的问题我很抱歉,但是我从几天开始学习Ajax,它仍然是一个尚未开发的世界。这是我的代码:
HTML
...
<table>
...
<tr><td>
<form action="mytemplate.html" method="GET" id="myform">{% csrf_token %}
<input class="chktest" name="test" type="checkbox" value= "{{number}}">
</form>
</td></tr>
<tr><td>
<form action="mytemplate.html" method="GET" id="myform">{% csrf_token %}
<input class="chktest" name="test" type="checkbox" value= "{{number}}">
</form>
</td></tr>
...
</table>
**JQUERY**
<script type="text/javascript">
$(document).ready(function() {
$('table tr td .chktest').click(function() {
$.ajax({
data: $(this).serialize(),
type: $(this).attr('method'),
url: $(this).attr('action'),
success: function(response) {
// on success..
},
error: function(e, x, r) {
// on error...
}
});
return false;
});
});
</script>
**MYVIEW.PY**
...
if request.is_ajax():
number = request.GET['number']
for obj in tab_company.objects.filter(id_number=number):
obj.update(check=not obj.check)
message = "Hello!"
return HttpResponse(json.dumps({'message': message}))
这样当我第一次单击复选框时,我会得到每行的正确数字。如果我在同一个复选框上再次检查它,则不会返回False(取消选中)。我哪里错了?
答案 0 :(得分:0)
问题出在这一行
tab_company.objects.filter(id_number=number).update(check=True)`
您将值设置为True,而不是切换它。你能尝试以下方法:
for obj in tab_company.objects.filter(id_number=number):
obj.update(check=not obj.check)