如何从模板中访问Django模型的Enum?

时间:2015-07-29 05:29:24

标签: python django django-models enums django-templates

我的Django模型类如下:

class MyClass(models.Model):
    CHOICE1 = "CHOICE1"
    CHOICE2 = "CHOICE2"

    FIELD_CHOICES = (
        (CHOICE1, CHOICE1),
        (CHOICE2, CHOICE2),
    )
    my_field = models.CharField(
        max_length=254,
        null=False,
        blank=False,
        choices=FIELD_CHOICES,
        default=CHOICE1,
    )

我将my_instance MyClass的实例传递给模板。 在该模板中,如何对my_field的可能值进行if-else检查?

我执行以下操作,但它不起作用:

{% if my_instance.my_field == my_instance.__class__.CHOICE1 %}
    <p>BLAH BLAH1</p>
{% elif my_instance.my_field == my_instance.__class__.CHOICE2 %}
    <p>BLAH BLAH2</p>
{% endif %}

修改 我可以将类MyClass传递给模板上下文,然后使用MyClass.CHOICEX。这样可行。但除了实例之外,必须传入类本身似乎是浪费。我不能从实例中获取Class,然后使用CHOICEX

1 个答案:

答案 0 :(得分:2)

您可以从实例访问类变量:

{% if my_instance.my_field == my_instance.CHOICE1 %}
    <p>BLAH BLAH1</p>
{% elif my_instance.my_field == my_instance.CHOICE2 %}
    <p>BLAH BLAH2</p>
{% endif %}

检查this answer以获取有关类变量的更多信息。