在模板逻辑中使用 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 上找到的任何内容都没有重复。
我有一个模型,说:
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 上找到的任何内容都没有重复。