不幸的是,没有一个直接的等价物-Wagtail的块机制将显示名称视为特定于编辑表单的细节,而不是数据的一部分,因此在渲染模板时不容易访问它们。我建议安排如下:
-
在自己的模块中定义选项列表,可以从多个地方导入,例如myapp/colors。py:
COLORS = (('Y', 'Yellow'), ...)
COLORS_LOOKUP = dict(COLORS) # gives you a dict of the form {'Y': 'Yellow', ...}
-
更新ChoiceBlock定义以引用其中定义的列表:
from myapp.colors import COLORS
class SomeBlock(blocks.StructBlock):
choice = blocks.ChoiceBlock(choices=COLORS)
-
from django import template
from myapp.colors import COLORS_LOOKUP
register = template.Library()
@register.simple_tag
def get_color_display_name(name):
return COLORS_LOOKUP.get(name)
-
{% load color_tags %}
...
{% get_color_display_name value.choice %} {# to output it immediately #}
{% get_color_display_name value.choice as label %} {# to assign it to the variable 'label' #}