考慮以下類:修改表單字段
models.py:
class Data(models.Model):
first_name = models.CharField()
checkbox_1 = models.BooleanField()
checkbox_2 = models.BooleanField()
forms.py:
class Form1(ModelForm):
class Meta:
model = Data
fields = ('first_name', 'checkbox_1',)
class Form2(ModelForm):
class Meta:
model = Data
fields = ('checkbox_2',)
Form1
在步驟1中被使用和在SessionWizardView
的步驟2中使用Form2
。
如果用戶在步驟1中檢查了Form2.checkbox_1
,我怎麼能在步驟2中禁用Form2.checkbox_2
?
我試圖通過覆蓋get_form()
沒有成功做到這一點:
def get_form(self, step=None, data=None, files=None):
form = super(MyWizard, self).get_form(step, data, files)
if step == '1':
form.fields['checkbox_2'].widget.attrs['disabled'] = 'disabled'
return form
請注意,我故意沒有檢查的Form2.checkbox_1
值。我試圖在任何情況下設置小部件的屬性。
Wizrd爲每個步驟都有單獨的表單,那麼爲什麼您需要根據當前步驟更改某些內容,而不是僅爲該步驟提供正確的表單? – ilvar
我更新了問題,突出顯示了我需要根據上一步的值更改表單字段的屬性。 – mbaechtold