需要有条件地使用Django表单字段

Efr*_*rin 21 forms django

我希望有一个基于将布尔值设置为True或False有条件的字段.

如果is_company设置为True,我应该返回set 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
Run Code Online (Sandbox Code Playgroud)

ari*_*rie 32

请查看文档中有关清洁和验证相互依赖的字段的章节.

文档中给出的示例可以很容易地适应您的场景:

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
Run Code Online (Sandbox Code Playgroud)

  • 还提供了链接@arie介绍了如何通过self._errors ["NIP"] = self.error_class更换raise语句错误与字段关联(["这是一个必填字段."]) (4认同)