2013-11-20 3 views
0

, поэтому я использую Django 1.3 form-wizard https://github.com/stephrdev/django-formwizard, и у меня возникают проблемы с полем mychoice, которое возвращает u'False' вместо False (boolean).Django form-wizard typechoicefield возвращающая строка вместо 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

Вы не указали coerce для своего TypedChoiceField.

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

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

Если вы хотите использовать False и True вместо 0 и 1, то обратите внимание, что использование coerce=bool не работает. Это связано с тем, что строка 'False' принуждена к True. This answer предлагает использовать пользовательскую функцию лямбда:

coerce = lambda x: x == 'True' 
+0

@ psychok7 Я был только о том, чтобы изменить свой ответ назад, но потом я увидел бы вы удалили свой комментарий. Использует ли лямбда-функцию для работы по принуждению? – Alasdair

+0

Я вернул ответ, который вы написали (0 и 1 вместо bool), потому что он работает ... вы, предыдущий ответ, не работали – psychok7