2013-02-19 87 views
1

我無法正確保存我的表單(一個ModelForm),因爲django顯示沒有值的複選框(我希望每個字段的值都爲「true」,兩者都選中而不是未選中。 ..但事實並非如此)。 當我提交表單時,POST中沒有收到任何數據!Django表單:複選框無值顯示

下面是一塊啊,我的模板:

<div> 
     {{form.displayAge.label_tag}} 
     {{form.displayAge}} 
     {{form.displayAge.errors}} 
</div> 

{{form.displayAge}}以這種方式呈現:

<input checked="checked" type="checkbox" name="displayAge" id="id_displayAge"> 

但是...因爲它沒有價值,選中/取消選中該複選框無助!我該怎麼辦? 我想避免用手輸入表單域!

回答

1

不,不需要value字段。如果複選框被選中,瀏覽器將默認提交"on"作爲默認值,如果沒有提供。

如果您沒有在您的視圖中獲得該值,則還有其他錯誤。請注意,由於您使用的是Django表單,因此無論如何您都不應該手動檢查request.POST:使用form.cleaned_data

+0

我很困惑...這是一個Django功能嗎?由於html規範不能確認你寫了什麼:http://www.w3.org/TR/html-markup/input.checkbox.html#input.checkbox.attrs.value ...並在瀏覽器中進行簡單的測試確認沒有任何東西在類似的情況下被提交(簡單的html表單和「get」方法以及沒有值的複選框) – daveoncode 2013-02-19 15:08:03

+0

arrrgh!問題是這樣的:我用Django的用戶模型配置我的表單而不是我的UserProfile模型...用MyForm(request.POST,instance = request.user.userprofile)替換MyForm(request.POST,instance = request.user)一切都好! :) – daveoncode 2013-02-19 15:22:36