我正在用两个BooleanFields编写Django表单:
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)我在视图中收集此表单中的数据:
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无论我是否检查这些框,这两个字段都会返回为假bools。我很困惑。
任何洞察力都将不胜感激。谢谢!
Alasdair有一些见解:我在表单字段中手动添加id属性,覆盖Django的默认id设置,因此浏览器不返回字段中的数据。
不幸的是,我需要通过一个javaScript文件访问这些表单字段,因为我使用的是Ajax。我是JavaScript和Ajax的新手,所以我不知道如何解决这个问题。
以下是我的Ajax post请求代码:
$.ajax({
url : "/verbquery/", // the endpoint
type : "POST", // http method
data : { english_gloss : $('#english_gloss').val(), person : $('#person').val(), number : $('#number').val(),
mode : $('#mode').val(), transitivity : $('#transitivity').val(), distributive : $('#distributive').val(),
voice : $('#voice').val()}, // data sent with the post request简单地将ids更改为可传递性和分发到django的默认id_transitivity和id_distributive,并不能将它们放入字典中。我知道这不是这篇文章的原点,但任何帮助都将不胜感激。
发布于 2015-07-09 15:06:51
我认为这是javascript的问题,而不是Django表单。
$('#transitivity').val()将始终返回复选框的'on'。
相反,请尝试以下几点:
$('#transitivity').is(':checked') ? 'on' : ''https://stackoverflow.com/questions/31321079
复制相似问题