有条件地需要 Django 表单字段
Posted
技术标签:
【中文标题】有条件地需要 Django 表单字段【英文标题】:Django form field required conditionally 【发布时间】:2012-06-13 14:56:42 【问题描述】:我希望有一个基于将布尔值设置为True
或False
的有条件需要的字段。
如果is_company
设置为True
,我应该返回什么设置required =True
?
class SignupFormExtra(SignupForm):
is_company = fields.BooleanField(label=(u"Is company?"),
required=False)
NIP = forms.PLNIPField(label=(u'NIP'), required=False)
def clean(self):
if self.cleaned_data.get('is_company', True):
return ...?
else:
pass
【问题讨论】:
【参考方案1】:查看文档中关于Cleaning and validating fields that depend on each other 的章节。
文档中给出的示例可以很容易地适应您的场景:
def clean(self):
cleaned_data = super(SignupFormExtra, self).clean()
is_company = cleaned_data.get("is_company")
nip = cleaned_data.get("NIP")
if is_company and not nip:
raise forms.ValidationError("NIP is a required field.")
return cleaned_data
【讨论】:
@arie 提供的链接还介绍了如何通过将 raise 语句替换为 self._errors["NIP"] = self.error_class(["This is an required field. "]) @Seth 感谢您的评论!这真的很有帮助!以上是关于有条件地需要 Django 表单字段的主要内容,如果未能解决你的问题,请参考以下文章