我有一个ModelForm,在第一次显示表单时,我想根据另一个字段的值禁用一个字段:
class MyForm(forms.ModelForm):
field_1 = forms.BooleanField(default=False)
field_2 = forms.CharField(default='mytext', required=True)
即,如果field_1
是False
,则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