2

所以我正在使用 Django 1.3 form-wizard https://github.com/stephrdev/django-formwizard我遇到了我的 typechoice 字段的问题,该字段正在返回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"

有任何想法吗?

4

1 回答 1

4

你没有coerce为你的TypedChoiceField.

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

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

如果您想使用FalseandTrue而不是0and 1,请注意 usingcoerce=bool不起作用。这是因为字符串'False'被强制转换为True. 这个答案建议使用自定义 lambda 函数:

coerce = lambda x: x == 'True'
于 2013-11-20T17:55:30.227 回答