我有一个模特,说:
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方法的人。
感谢。
答案 0 :(得分:2)
我会在模型中编写一个属性方法
class Day(models.Model):
[...]
@property
def is_rainy(self):
return self.weather == self.WEATHER.rainy
在我的模板中,我会检查:
{% if monday.is_rainy %}
It rained monday
{% endif %}
答案 1 :(得分:0)
我(愚蠢地)已经在我的代码中实现了这个并忘记了它!根据我的例子,可以使用实例来引用选择的可能性:
{% if monday.weather == monday.WEATHER.rainy %}
[...]
我会删除这个问题,但事实仍然是在文档中没有很清楚地解释,并且似乎没有重复我在stackoverflow上找到的任何内容。