2016-08-06 4 views
0

Я не могу проверить данные POST с булевским значением поля «false», это отлично работает с «истинным». Я уже пытался заставить «0», «False» и «false», но метод is_valid() возвращает false с ошибкой «Это поле обязательно».Невозможно проверить логическое поле, если значение = false (отсутствует поле)

Мой пост ДИКТ данные:

<QueryDict: {u'vote': [u'false'], u'csrfmiddlewaretoken': [u'l3RlmeHDnv7Y5aQiNJoadLUZDsiOFUI'], u'id': [u'40']}> 

Если я отправляю «истина» значение для этого поля, QueryDict точно такой же, только «ложь» меняется.

Я попытался преобразовать в str вместо unicode dict, но он не работает.

Спасибо!

ответ

1

Если я правильно понял ваш вопрос, вам нужно будет разобрать входные данные из строки в значение bool. Следующие bool('false') и bool('true') всегда будут возвращать True из-за их неявного truthiness and falseness соответственно.

def to_bool(s): 
    return s.lower() == 'true' 

Пример вывода:

d = {u'vote': [u'false']} 
print to_bool(d['vote'][0]) 
>>> False 
+0

Это возможно. Но каков правильный ответ формы для логического поля? В моем JS-коде я просто возвращаю результат теста. – Loy

0

решаемые: Использование NullBooleanField вместо BooleanField ...

Смежные вопросы