考虑以下类:修改表单字段
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