如何获取ModelForm中字段的实例值



我有一个ModelForm,在第一次显示表单时,我想根据另一个字段的值禁用一个字段:

class MyForm(forms.ModelForm):
field_1 = forms.BooleanField(default=False)
field_2 = forms.CharField(default='mytext', required=True)

即,如果field_1False,则field_2将具有小部件属性disabled

我知道我可以在__init__上设置disabled属性,但我如何查找field_1的值?例如:

class MyForm(forms.ModelForm):
field_1 = forms.BooleanField(default=False)
field_2 = forms.CharField(default='mytext', required=True)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
// If field_1 is False then:
self.fields['field_2'].disabled = True

我可以用self.fields['field_2'].initial获得field_1的初始值,但我想要实例的实际值。

调用窗体父类的构造函数后,您可以访问instance属性,该属性是要更新的模型的实例,或者是要创建的模型的新实例。

class MyForm(forms.ModelForm):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.fields['field_2'].disabled = not self.instance.field_1

最新更新