2012-04-13 123 views
0

發佈未選中的複選框值我在一個Django的形式(的Django V1.2)張貼複選框的狀態查找的麻煩。麻煩在Django

這裏是我的模型中場:

subscribe = models.BooleanField(default=False, verbose_name="Subscribe")

在相關模板文件:

{{ form.subscribe }}

這使得該複選框爲未覈對的最初階段。但是,當我發帖的形式(無其他任何接觸),Django會在發送request.POSTu'subscribe': [u'on']。也就是說,無論複選框是否被選中,響應始終包含u'subscribe': [u'on']

如果未選中該複選框,在模板中的<input>標籤呈現爲
<input type="checkbox" name="subscribe" id="id_subscribe" />

而且,當複選框被選中,它呈現爲
<input type="checkbox" name="subscribe" id="id_subscribe" checked="checked" />

我在這裏缺少什麼?

+0

你表單驗證後得到了什麼? form.cleaned_data ['subscribe']中的值是否根據複選框狀態而變化?你能發佈ModelForm聲明嗎? – cfedermann 2012-04-13 18:25:50

+1

問題可能是你的意見,你如何收集你的數據? – zallarak 2012-04-13 19:28:12

+0

@cfedermann表單正在驗證。我在表單驗證後打印'request.POST'。它打印'u'subscribe':[u'on']'。 ModelForm沒有什麼特別的。一些乾淨的函數用於「訂閱」以外的字段。我也在'__init__'中將一些樣式應用於小部件。就這樣。 @zallarak我收集'request.POST'數據和保存這樣的形式:'SubscriberForm(request.POST,實例=用戶).save()' – vkb001 2012-04-18 15:30:40

回答

0

您的瀏覽器是什麼職位價值「上」。這是沒有value =「blah」屬性集的複選框輸入的正常行爲。如果它總是發佈爲'開',即使未選中該複選框,那麼瀏覽器端可能會設置一些設置。