【发布时间】:2013-08-12 10:59:44
【问题描述】:
在我的 Django 应用程序中,我目前有一个带有几个表单类的表单向导。我想有条件提出问题的能力。这意味着如果用户为某个问题选择“是”,则表单中的另一个问题将成为必填项,并且 javascript 将使该问题可见。我在网上找到了一个如何执行此操作的示例,但是它不起作用。有关如何创建此功能的任何建议?
class QuestionForm(forms.Form):
COOL_LIST = (
('cool','Cool'),
('really cool','Really Cool'),
)
YES, NO = 'yes','no'
YES_NO = (
(YES,'Yes'),
(NO,'No'),
)
are_you_cool = forms.ChoiceField(choices=YES_NO,label='Are you cool?')
how_cool = forms.MultipleChoiceField(required=False,widget=CheckboxSelectMultiple, choices=COOL_LIST,label='How cool are you?')
def __init__(self, data=None, *args, **kwargs):
super(QuestionForm, self).__init__(data, *args, **kwargs)
if data and data.get('are_you_cool', None) == self.YES:
self.fields['how_cool'].required = True
【问题讨论】:
-
您必须了解 Web 客户端-服务器流程。对于您的问题,您有两个选择:链接表单,因此对于发送给客户端并由他提交的每个表单,服务器都会根据您的条件向客户端发送一个新表单。这是标准解决方案。另一种情况是:您只向客户端发送一个表单,但当他填写字段时,表单会发生变化与您的服务器没有任何通信。这是Ajax方式,你更喜欢什么?
标签: python django conditional django-formwizard