如何从模板中访问 Django 模型的枚举?
How can I access a Django model's Enum from within a template?
我的Django模型class如下:
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 %}
编辑:
我可以将 class MyClass
传递到模板上下文中,然后使用 MyClass.CHOICEX
。这样可行。但是除了实例之外还必须传入 class 本身似乎很浪费。我不能从实例中获取 Class 然后使用 CHOICEX
吗?
您可以从实例访问 class 个变量:
{% 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 了解有关 class 变量的更多信息。
我的Django模型class如下:
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 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 %}
编辑:
我可以将 class MyClass
传递到模板上下文中,然后使用 MyClass.CHOICEX
。这样可行。但是除了实例之外还必须传入 class 本身似乎很浪费。我不能从实例中获取 Class 然后使用 CHOICEX
吗?
您可以从实例访问 class 个变量:
{% 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 了解有关 class 变量的更多信息。