【问题标题】:Testing Django model choices in templates在模板中测试 Django 模型选择
【发布时间】:2011-01-03 09:11:57
【问题描述】:

假设我有这样的模型:

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 的自定义上下文处理器吗?也许是模板标签?

谢谢!

【问题讨论】:

    标签: django django-models django-templates


    【解决方案1】:

    就我个人而言,我会在您的 Account 模型中添加一个 is_paid(self) 方法,然后可以直接从模板中调用该方法。额外的好处是这在您的应用程序的其他部分具有实用性。

    它还使您能够在函数中进行额外处理,例如员工 (is_staff) 可能会将其用户类型自动设置为付费。

    【讨论】:

      【解决方案2】:
      猜你喜欢
      • 2018-10-19
      • 2018-07-05
      • 2012-01-13
      • 2017-11-20
      • 1970-01-01
      • 2021-01-04
      • 1970-01-01
      • 2018-07-14
      • 2023-03-15
      相关资源
      最近更新 更多