Django modelform根据其他字段选择删除"required"属性

Igo*_*gor 7 django django-models django-forms

我有几个字段的ModelForm.有些字段是必需的,有些则不是.此外,我选择具有不同选择的字段,并且我希望根据此选择字段选择使某些字段"必需".

我尝试了Form的clean()方法

def clean(self):
    cleaned_data = self.cleaned_data
    some_field = cleaned_data.get("some_field")
    if some_field == 'some_value':
          self.fields['other_field'].required = False
    return cleaned_data
Run Code Online (Sandbox Code Playgroud)

但它不起作用

And*_*ron 10

请参阅有关清理和验证彼此依赖的字段的Django文档.标准做法是执行以下处理:

def clean(self):
    cleaned_data = self.cleaned_data
    some_field = cleaned_data.get("some_field")
    if some_field == 'some_value':
          # 'other_field' is conditionally required.
          if not cleaned_data['other_field']:
              raise forms.ValidationError("'Other_field' is required.")
    return cleaned_data
Run Code Online (Sandbox Code Playgroud)