假设我有一个这样的模型:
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#定义或常量的事情来测试user_type。因此,我的模板代码将如下所示:
{% ifequal user_type PAID_ACCOUNT %}而不是使用像这样的魔术数字:
{% ifequal user_type 2 %}在Django中做这件事最优雅的方式是什么?我应该只定义一个包含FREE_ACCOUNT和PAID_ACCOUNT的自定义上下文处理器吗?也许是一个模板标签?
谢谢!
发布于 2010-01-10 08:55:24
就我个人而言,我要做的是向您的帐户模型添加一个is_paid(self)方法,然后可以直接从模板中调用该方法。附加的好处是,这在您的应用程序的其他部分中具有实用价值。
它还为您提供了在函数中执行额外处理的能力,例如,员工(is_staff)可能会将其用户类型自动设置为已支付。
发布于 2011-02-28 06:20:16
I like the method using enums described here.
https://stackoverflow.com/questions/2035590
复制相似问题