在模板中测试Django模型选择

And*_*w C 4 django django-templates django-models

说我有一个像这样的模型:

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)
Run Code Online (Sandbox Code Playgroud)

在模板中,我想测试user_type以显示特殊部分,如果用户是"付费"类型.

我想做一些类似于C#define或常量来测试user_type.所以我的模板代码如下:

{% ifequal user_type PAID_ACCOUNT %}
Run Code Online (Sandbox Code Playgroud)

而不是使用像:

{% ifequal user_type 2 %}
Run Code Online (Sandbox Code Playgroud)

在Django中最优雅的方法是什么?我应该只定义一个FREE_ACCOUNT和PAID_ACCOUNT的自定义上下文处理器吗?也许是模板标签?

谢谢!

Aar*_*non 5

我个人会做的是is_paid(self)为您的帐户模型添加一个方法,然后可以直接从模板中调用该方法.额外的好处是,它在您的应用程序的其他部分中具有实用性.

它还使您能够在功能中执行额外处理,例如,工作人员(is_staff)可能会将其用户类型自动设置为已付款.