我有一个使用 model_utils.Choices 的 CharField 模型:
from model_utils import Choices
class UserTestStatistics(models.Model):
TEST_STATUSES = Choices(
('NR', 'not_readed'),('NP', 'not_passed'),
('FL', 'failed'), ('PD', 'passed'),
)
status = models.CharField(choices=TEST_STATUSES, max_length=2)
在模板中,我想根据状态字段中的值添加自定义 css 类。我试过这个:
{% if lecture.status == 'NP' %}
label-warning
{% endif %}
这没有用。然后我尝试了这个:
context['statuses'] = UserTestStatistics.TEST_STATUSES
{% elif lecture.status == statuses.not_passed %}
label-warning
{% endif %}
它也失败了。这就是为什么:
>>> s = UserTestStatistics.objects.get(lecture=l)
>>> type(s.status)
<type 'unicode'>
>>> type(UserTestStatistics.TEST_STATUSES.passed)
<type 'str'>
快速而肮脏的解决方案是添加自定义模板标签,将两者都转换为 uncode 然后进行比较,但对我来说,它看起来好像我错了。
任何人都可以请建议更漂亮的东西吗?