2015-03-04 3 views
1

У меня есть модель, скажем:Использование Django выбор в шаблоне Logic

from model_utils import Choices 

class Day(models.Model): 
    WEATHER = Choices(
     ('r', 'rainy', 'Rainy'), 
     ('s', 'sunny', 'Sunny'), 
    ) 
    weather = models.CharField(max_length=1, choices=WEATHER) 

Есть ли способ, в презентации, использовать логические ключевые слова например:

{% ifequal monday.weather Day.WEATHER.rainy %} 
It rained monday 
{% endifequal %} 

Я знаю get_FOO_display(), но скорее не будет тестировать жесткую цепочку (например, monday.get_weather_display == «Дождливый»). Есть ли тег шаблона или включение или какой-либо способ ссылаться на это объявление в модели? Или, по крайней мере, рекомендация по лучшей практике для выбора логики выбора в шаблоне? Я нашел мало данных в документах, не могу обернуть голову вокруг источника, и все вопросы, которые я нашел здесь, это люди, которые ищут метод get_FOO_display.

Спасибо.

ответ

2

Я хотел бы написать метод собственности в модели

class Day(models.Model): 

    [...] 

    @property 
    def is_rainy(self): 
     return self.weather == self.WEATHER.rainy 

И в моем шаблоне я хотел бы проверить:

{% if monday.is_rainy %} 
    It rained monday 
{% endif %} 
0

I (сдуру) уже реализовано это в моем коде, и забыли о Это! Можно использовать экземпляр для обозначения возможности выбора, в моем примере:

{% if monday.weather == monday.WEATHER.rainy %} 
[...] 

Я бы удалить этот вопрос, но факт остается факт, это не объясняется очень четко в документации и не появляется дубликат всего, что я смог найти в stackoverflow.

+0

Я бы порекомендовал вам поместить логику в вашу модель вместо шаблона. – mishbah

+0

Это, вероятно, мудрая вещь, которую можно сделать, однако, возможно, несостоятельна/беспорядочна, если у вас есть много вариантов для проверки или против. Хотя я полагаю, что в этот момент могут возникнуть большие проблемы. –

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