说我有一个类似的模型:
from django.db import models
USER_TYPE_CHOICES = (
(1, 'Free'),
(2, 'Paid'),
)
class Account(models.Model):
name = models.CharField(max_length=20)
user_type = models.IntegerField(default=1, choices=TYPE_CHOICES)
在模板中我想测试user_type以显示特殊部分,如果用户的类型是“付费”。
我想做类似于C #define或常量来测试user_type。所以我的模板代码如下:
{% ifequal user_type PAID_ACCOUNT %}
而不是使用像:
这样的幻数{% ifequal user_type 2 %}
在Django中最优雅的方法是什么?我应该只定义一个FREE_ACCOUNT和PAID_ACCOUNT的自定义上下文处理器吗?也许是模板标签?
谢谢!
答案 0 :(得分:5)
我个人会做的是在您的帐户模型中添加is_paid(self)
方法,然后可以直接从模板中调用。额外的好处是,它在您的应用程序的其他部分中具有实用性。
它还使您能够在功能中进行额外处理,例如工作人员(is_staff
)的用户类型可能会自动设置为已付款。
答案 1 :(得分:2)