2013-03-13 2 views
0

Это {% if x.number == 1 %} и {% if x.number == 2 %} работа хорошаяDjango шаблон {%, если x.number == 0%} не работает

но {% if x.number == 0 %} не работает. Зачем?

{% for d in data %} 
    {% for x in d.animalnumber_set.all %} 

     {{ x.number }} <!-- Nothing displays. -> 
     {% if x.number == 1 %} 
      <p>Something</p> 
     {% endif %} 

     {% if x.number == 2 %} 
      <p>Something 2</p> 
     {% endif %} 

     {% if x.number == 0 %} 
      <p>Nothing</p> 
     {% endif %} 
    {% endfor %} 
    {% endfor %} 

EDIT:

В базе данных number поданном является choices. Как заменить {% if x.number == 0 %}? == None тоже не работает.

---- 
1 
2 
3 
4 
+1

Я не вижу в списке вариантов '0', поэтому я не уверен, почему вы ожидаете его работы? –

+0

и каково значение в базе данных, если вы выберете '----'? –

+0

Можете ли вы сбросить {{x.number}} в свой шаблон и проверить, что это действительно '0', а не' Нет' или что-то еще? –

ответ

0

Если avaialble варианты между 1-6, почему вы проверить x.number == 0? Это никогда не произойдет.

Если у пользователя нет номера животных, d.animalnumber_set.all вернет None. Таким образом, контроль будет состоять в том, чтобы проверить, является ли x пустым

{% for d in data %} 
    {% for x in d.animalnumber_set.all %} 

     {% if x.number == 1 %} 
      <p>Something</p> 
     {% endif %} 

     {% if x.number == 2 %} 
      <p>Something 2</p> 
     {% endif %} 
    {% empty %} 
     <p>Nothing</p> 
    {% endfor %} 
{% endfor %} 
+0

Спасибо. Ваше решение отлично работает – SantaDev

2

, если данные не имеет значения или 0, используйте not

{% if not x.number %} 
+0

Спасибо. Я заменил '{% if x.number == 0%}' на '{% if not x.number%}' и все равно это 'if' не работает – SantaDev

+0

Вы уверены, что x.number не имеет значения? или, может быть, это не так, просто «пусто»? – catherine

+0

Я думаю, что мой объект не существует '{% for x в d.animalnumber_set.all%}' http://dpaste.com/hold/1021595/, но я не знаю, как его изменить – SantaDev

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