2011-08-04 2 views

ответ

9

is_open, вероятно, BooleanField, поэтому его значение python является булевым, а не строкой. Используйте {% if latest_session.chat_room.is_open %}, чтобы проверить его.

+0

Да, вы правы, это его решает. Странно, однако, что в автогенерированных документах не упоминалось, что он был логическим, но сделал это для других полей. – Sammy

+0

, но будьте осторожны, что вы знаете, что это логическое, а не текстовое поле, если это текстовое поле с «ложным», то {%, если last_session.chat_room.is_open%} имеет значение true – Ted

3

True - булево значение, а не строка. Вместо этого используйте {% if latest_session.chat_room.is_open %}.

0

Согласно Django Book,

{%, если%} тег оценивает переменную, и если эта переменная «True» (то есть, она существует, не пусто, и не является ложным Boolean value), система отобразит все между {% if%} и {% endif%}.

Следовательно, вы не можете сравнивать между тегами {% if%}. Так как is_open, вероятно, возвращает логическое значение, однако вместо этого используйте следующее.

{% if latest_session.chat_room.is_open %} 
+1

Не верно в отношении Django 1.2: [ были добавлены базовые операторы сравнения] (https://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#operator) –

+0

Очень круто. Я не знал этого. –

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