我正在编写一个带有两个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并不会将它们放入字典中。我知道这不是帖子的原始点,但任何帮助都会受到赞赏。
答案 0 :(得分:1)
我认为这是您的javascript问题,而不是Django表单。
$('#transitivity').val()
将始终返回'on'
以获取复选框。
请尝试以下方法:
$('#transitivity').is(':checked') ? 'on' : ''