Ajax Django简单的复选框操作

时间:2014-07-22 08:20:05

标签: javascript jquery ajax django checkbox

我的表格的每一行都有一个复选框。我的目标是选中/取消选中复选框并在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(取消选中)。我哪里错了?

1 个答案:

答案 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)