3

在我的 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
4

1 回答 1

0

尝试__init__用自定义方法替换表单的clean_are_you_cool方法。因此,如果用户提交值Yes,您应该检查是否how_cool也填充了字段。您还应该在客户端执行此操作以提供出色的用户体验。像这样的形式:

def clean_are_you_cool(self):
    if self.cleaned_data.get('are_you_cool', None) == 'Yes':
        if self.cleaned_data.get('how_cool', None) is not None:
           #  Actions for cool user. 
           pass
    #  Or if user not cool.
于 2013-08-10T18:55:32.687 回答