首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在模板中测试Django模型选择

在模板中测试Django模型选择
EN

Stack Overflow用户
提问于 2010-01-10 08:45:20
回答 2查看 2K关注 0票数 5

假设我有一个这样的模型:

代码语言:javascript
复制
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。因此,我的模板代码将如下所示:

代码语言:javascript
复制
{% ifequal user_type PAID_ACCOUNT %}

而不是使用像这样的魔术数字:

代码语言:javascript
复制
{% ifequal user_type 2 %}

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

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-01-10 08:55:24

就我个人而言,我要做的是向您的帐户模型添加一个is_paid(self)方法,然后可以直接从模板中调用该方法。附加的好处是,这在您的应用程序的其他部分中具有实用价值。

它还为您提供了在函数中执行额外处理的能力,例如,员工(is_staff)可能会将其用户类型自动设置为已支付。

票数 6
EN

Stack Overflow用户

发布于 2011-02-28 06:20:16

I like the method using enums described here.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2035590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档