我有这个模型: -
class ModelA(models.Model):
billing_same_as_mailing = models.BooleanField(default=True, label='...')
这种形式: -
class ModelAForm(forms.ModelForm):
class Meta:
model = ModelA
fields = ['billing_same_as_mailing']
在我的模板中,我尝试了以下领域: -
{{ form.billing_same_as_mailing }}
现在,当我发帖时,billing_ame数据中的billing_same_as_mailing值始终为false。 但是如果我在模型中将BooleanField的默认值设置为False,那么一切正常。
现在当我检查浏览器上的checkbox元素时,这就是我得到的: - 默认值= False: -
<input class="" id="billing_same_as_mailing" name="billing_same_as_mailing" type="checkbox">
默认= True: -
<input checked="checked" class="" id="id_billing_same_as_mailing" name="billing_same_as_mailing" type="checkbox" value="">
为什么会这样?
答案 0 :(得分:1)
我最终做到了这一点: -
<input type="checkbox" class="icheckbox" id="id_billing_same_as_mailing" name="billing_same_as_mailing" {% if form.billing_same_as_mailing.value %} checked="checked" {% endif %} value="{{ form.billing_same_as_mailing.value }}">{{ form.billing_same_as_mailing.label }}
这完全没问题。
根据我的尝试,在我的系统上(运行Django 1.9.8),输入字段的值没有填充为true。 当我尝试使用另一个系统(运行Django 1.7.3)时,检查=&#34;检查&#34;输入字段的填充没有填充,尽管两者的代码相同。
由于某种原因,输入字段的选中或值未填充。
要使表单正常工作,需要输入input元素的checked属性和value属性。
有谁知道为什么?
答案 1 :(得分:1)
你需要设置value="on"
所以输入元素看起来像这样 -
<input type="checkbox" class="icheckbox" id="id_billing_same_as_mailing" name="billing_same_as_mailing" {% if form.billing_same_as_mailing.value %} checked="checked" {% endif %} value="on">
我尝试使用default options Django提供的一个表单并在视图中记录request.POST
。对于布尔字段,它是{u'billing_same_as_mailing' : [u'on']}
。
由于这是model form,如果我们确保request.POST
看起来像ModelAForm
所期望的那样,它会将其映射到相应的字段。您可以使用此方法检查是否还需要修改其他输入元素