Django(1.8)Ajax形式BooleanField总是返回True

时间:2015-07-09 14:53:02

标签: python ajax django django-forms django-views

我正在编写一个带有两个BooleanFields的Django表单:

if(all(array4Example(:)))

我在视图中收集此表单中的数据:

distributive = forms.BooleanField(widget=forms.CheckboxInput(
    attrs={'id':'distributive'}),required=False, initial=False)
transitivity = forms.BooleanField(widget=forms.CheckboxInput(
    attrs={'id':'transitivity'}),required=False, initial=False)

无论我是否勾选方框,两个字段都返回为False bools。我很困惑。

非常感谢任何见解。谢谢!

Alasdair有一些见解:  我在表单字段中手动添加id属性会覆盖Django的默认ID设置,因此浏览器不会从字段中返回任何数据。

不幸的是我需要通过javaScript文件访问这些表单字段,因为我使用的是Ajax。我是JavaScript和Ajax的新手,所以我不确定如何解决这个问题。

这是我的Ajax帖子请求代码:

class MyFormView(View):
    ...
    def post(self, request):
        form = VerbQueryForm(request.POST)
        if form.is_valid():
            transitivity = form.cleaned_data['transitivity']
            distributive = form.cleaned_data['distributive']
            print(type(transitivity))  #debugging
            print(transitivity)        #debugging
            print(type(distributive))  #debugging
            print(distributive)        #debugging

简单地将传递性和分配性的ID更改为django的默认id_transitivity和id_distributive并不会将它们放入字典中。我知道这不是帖子的原始点,但任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

我认为这是您的javascript问题,而不是Django表单。

$('#transitivity').val()将始终返回'on'以获取复选框。

请尝试以下方法:

$('#transitivity').is(':checked') ? 'on' : ''