【发布时间】:2016-11-06 06:28:01
【问题描述】:
我在项目中使用Django Form Wizard。我希望允许用户为特定字段提供初始数据,并且我还希望禁用提供初始数据的字段。
问题是当用户点击返回按钮时,初始数据被删除。
例如这是我的表单(初始数据设置为第二步)
如您所见,这里一切正常,表单字段被禁用并且值被选中。现在我们点击next。
我们点击next,我们可以毫无问题地进入第二步,但现在如果我点击back..
表单字段仍处于禁用状态,但值已消失!
我使用的代码是这样的(相关部分):
Form
CHOICES=[('ONE','Choice 1'),
('TWO','Choice 2'),
('THREE','Choice 3'),
('FOUR','Choice 4'),
]
class BookingForm1(forms.Form):
""" Select reservation type"""
sko = forms.ChoiceField(choices=CHOICES, widget=forms.RadioSelect())
向导
def get_form(self, step=None, data=None, files=None):
form = super(PresentView, self).get_form(step, data, files)
step = step or self.steps.current
initial = {
'sko': {
'initial':'TWO'
}
}
for field in initial:
try:
form.fields[field].widget.attrs['readonly'] = True
form.fields[field].widget.attrs['disabled'] = True
form.fields[field].required = False
form.fields[field].initial = initial[field]['initial']
except:
pass
任何想法将不胜感激!
【问题讨论】:
-
我没有为您提供解决方案,但这里解释了它为什么不起作用:当您禁用该字段时,这意味着浏览器不会将值提交给服务器。当你回到原来的表单时,表单是绑定的,所以 Django 使用了表单数据并忽略了
initial数据。但是表单数据不包含禁用字段的值,因此在呈现表单时不会选择任何值。
标签: python django django-formwizard