Django form-wizard typechoicefield返回字符串而不是boolean

时间:2013-11-20 17:43:56

标签: python django python-2.7 django-formwizard choicefield

所以我使用的是Django 1.3表单向导https://github.com/stephrdev/django-formwizard,我遇到了类型选择字段的问题,该字段返回u'False'而不仅仅是False (boolean)

我该怎么办?

ONE_OR_MULTIPLE_CHOICES = (
    (False, 'One'),
    (True, 'Multiple')
)

class PublicJobCreateForm(forms.Form):
    multiple = forms.TypedChoiceField(choices=ONE_OR_MULTIPLE_CHOICES, widget=forms.RadioSelect)

我这样称呼:

def done(self, form_list, **kwargs):
    create_form_data = form_list[0].cleaned_data
    if create_form_data['multiple']:
        print "something"

任何想法?

1 个答案:

答案 0 :(得分:1)

您尚未为TypedChoiceField指定coerce

ONE_OR_MULTIPLE_CHOICES = (
    (0, 'One'),
    (1, 'Multiple')
)

multiple = forms.TypedChoiceField(choices=ONE_OR_MULTIPLE_CHOICES,
                                  widget=forms.RadioSelect,
                                  coerce=int)

如果您想使用FalseTrue代替01,请注意使用coerce=bool不起作用。这是因为字符串'False'被强制转换为TrueThis answer建议使用自定义lambda函数:

coerce = lambda x: x == 'True'