在模板逻辑中使用 Django Choices

Using Django Choices in Template 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 == 'Rainy')。是否有模板标签或包含或某种方式来引用模型中的这种减法?或者至少是在模板中执行与选择相关的逻辑的最佳实践建议?我在文档中发现的证据很少,无法真正理解源头,我在这里发现的所有问题都是人们在寻找 get_FOO_display 方法。

谢谢。

我会在模型中写一个属性方法

class Day(models.Model):

    [...]

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

在我的模板中,我会检查:

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

我(愚蠢地)已经在我的代码中实现了这个并且忘记了它!根据我的示例,可以使用实例来指代选择的可能性:

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

我会删除这个问题,但事实是它在文档中没有解释得很清楚,而且似乎与我在 Whosebug 上找到的任何内容都没有重复。