Ajax Django简单的复选框动作
Ajax Django simple checkbox action
表的每一行都有一个复选框。我的目标是选中/取消选中复选框,并在我的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(取消选中)。我哪里错了?
问题在这一行
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)
相关文章:
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- 正在验证8个真/假复选框或复选框中的2个
- 为复选框javascript指定两个值
- 如何在单击复选框后调用控制器方法
- 从复选框和Selects-KnockoutJS中获取值的总和
- 选中多个具有相同名称的复选框
- 使用Jquery选择或取消选择ListView中的所有复选框
- 如何从django表单库中隐藏复选框,并使用Javascript切换其显示属性
- 转换复选框'在'在发布到Django视图之前,将其设置为Boolean
- 从 django 读取复选框状态
- 验证至少一个复选框通过 Ajax 在 django html 模板中选中
- 如何传递使用html中复选框选择的表行n将数据传递给views.py-django
- 一次添加一个项目到“;推车”;在Django、Ajax和Jquery中使用复选框
- 选中复选框后提交django表单
- 如何检查django模板中哪些复选框被选中或未选中
- Ajax Django简单的复选框动作
- 通过Ajax向Django发送一个复选框列表
- 如何在Django脆皮表单中使用JS启用/禁用复选框按钮
- 使用Django、CSS和Javascript使HTML表单文本字段依赖于复选框的选择
- 仅当通过复选框选择文件时,Django 模板中的显示按钮