Python 如何在django中将布尔值设置为False
我在表单中有一个名为“hof”的复选框按钮,如果我单击表单中的复选框并发送,它会工作,但是如果我取消选中它拒绝发送,我得到的是这个字段是必需的 这是我的型号Python 如何在django中将布尔值设置为False,python,html,django,Python,Html,Django,我在表单中有一个名为“hof”的复选框按钮,如果我单击表单中的复选框并发送,它会工作,但是如果我取消选中它拒绝发送,我得到的是这个字段是必需的 这是我的型号 class CreateSingleSigner(models.Model): firstname = models.CharField(max_length = 32) middlename = models.CharField(max_length = 32) lastname = models.CharFiel
class CreateSingleSigner(models.Model):
firstname = models.CharField(max_length = 32)
middlename = models.CharField(max_length = 32)
lastname = models.CharField(max_length = 32)
displayname = models.CharField(max_length = 32)
era = models.CharField(max_length = 11)
category = models.CharField(max_length = 32)
hof = models.BooleanField()
externallink = models.CharField(max_length = 70)
loaprice = models.FloatField(max_length = 10)
basiccertprice = models.FloatField(max_length = 10)
appraisalcost = models.FloatField(max_length = 10)
notability = models.CharField(max_length = 32)
如果我的观点在这里
def singlesigner(request):
context = {}
if request.method == 'POST':
createsinglesigner_form = CreateSingleSignerForm(data=request.POST)
if createsinglesigner_form.is_valid():
createsinglesigner = createsinglesigner_form.save(commit=False)
createsinglesigner.firstname = request.POST['firstname']
createsinglesigner.middlename = request.POST['middlename']
createsinglesigner.lastname = request.POST['lastname']
createsinglesigner.displayname = request.POST['displayname']
createsinglesigner.era = request.POST['era']
createsinglesigner.category = request.POST['category']
createsinglesigner.hof = request.POST['hof']
createsinglesigner.externallink = request.POST['externallink']
createsinglesigner.loaprice = request.POST['loaprice']
createsinglesigner.basiccertprice = request.POST['basiccertprice']
createsinglesigner.appraisalcost = request.POST['appraisalcost']
createsinglesigner.notability = request.POST['notability']
createsinglesigner_form.save()
else:
print createsinglesigner_form.errors
else:
# context['createsinglesigner'] = CreateSingleSigner()
createsinglesigner_form =CreateSingleSignerForm()
return render(request, "signer/singlesigner.html", {"createsinglesigner_form":createsinglesigner_form})
这是我的表格
class CreateSingleSignerForm(forms.ModelForm):
firstname = forms.CharField(max_length = 32, required = True, help_text = "firstname")
middlename = forms.CharField(max_length = 32, required = True, help_text = "middlename")
lastname = forms.CharField(max_length = 32, required = True, help_text = "lastname")
displayname = forms.CharField(max_length = 32, required = True, help_text = "displayname")
era = forms.CharField(max_length = 11, required = True, help_text = "era")
category = forms.CharField(required = True, help_text = 'category')
hof = forms.BooleanField(required=False, help_text = 'hall of fame')
notability = forms.CharField(max_length = 11, required = True, help_text = 'notability')
externallink = forms.CharField(required = True, help_text = "externallink")
loaprice = forms.FloatField(required = True, help_text = "loaprice $")
basiccertprice = forms.FloatField(help_text = "basiccertprice $")
appraisalcost = forms.FloatField(help_text = "appraisalcost $")
class Meta:
model = CreateSingleSigner
fields = ('firstname',)
设法改变形式
hof = forms.BooleanField(required=False, help_text = 'hall of fame')
到
设法改变形式
hof = forms.BooleanField(required=False, help_text = 'hall of fame')
到
您不应该为表单上的
布尔字段设置初始值
您还使用了模型表单
,不需要在表单中重写模型的逻辑
forms.py:
class CreateSingleSignerForm(forms.ModelForm):
class Meta:
model = CreateSingleSigner
fields = (
'hof',
...
)
# Instantiate the object and override the required setting on hof field:
def __init__(self, *args, **kwargs):
super(CreateSingleSignerForm, self).__init__(*args, **kwargs)
self.fields['hof'].required = True
如果要坚持使用代码,请从forms.Form
继承,而不是从forms.ModelForm
继承,并指示Django保存复选框的未选中状态:
hof = forms.BooleanField(required=True, help_text='Hall of Fame')
在models.py
中为hof
设置默认值以确保可读性也是一种很好的做法。您不应该为表单上的布尔字段设置初始值
您还使用了模型表单
,不需要在表单中重写模型的逻辑
forms.py:
class CreateSingleSignerForm(forms.ModelForm):
class Meta:
model = CreateSingleSigner
fields = (
'hof',
...
)
# Instantiate the object and override the required setting on hof field:
def __init__(self, *args, **kwargs):
super(CreateSingleSignerForm, self).__init__(*args, **kwargs)
self.fields['hof'].required = True
如果要坚持使用代码,请从forms.Form
继承,而不是从forms.ModelForm
继承,并指示Django保存复选框的未选中状态:
hof = forms.BooleanField(required=True, help_text='Hall of Fame')
在models.py
中为hof
设置默认值以确保可读性也是一种很好的做法。在/signer/singlesigner/“'hof'”处的复选框multivaluedictKeyError仍然需要获取此字段。尝试将视图更改为:if createsinglesigner\u form.is\u valid():createsinglesigner\u form.save()否则:打印createsinglesigner\u form.Errors直到/signer/singlesigner/“'hof'”处的复选框MultiValueDictKeyError需要获取此字段,请尝试将视图更改为:if createsinglesigner\u form.is\u valid():createsinglesigner\u form.save()其他:打印createsinglesigner\u表单错误