我在django中创建了一个“Field.choice”,用于定义可用于项目的优先级状态。当我尝试显示一个项目时,当我想显示/使用人类可读的名称时,我会遇到常量(在CAP中)。
例如,具有优先级(MAITRISE,u'Maitrisé')的项目将显示为MAI(常量MAITRISE的值)而不是“Maitrisé”。
我该如何改变?如何选择我想使用的tuplue(MAITRISE,u'Maitrisé')中的哪个元素?
这是我的字段选择(我添加或更改项目的优先级状态)
priority = models.CharField(max_length = 50,choices=PRIORITY_CHOICE,default=PRIORITAIRE)
MAITRISE = 'MAI'
IMPORTANT = 'IMP'
PRIORITAIRE = 'PRIO'
PRIORITY_CHOICE = (
(MAITRISE, u'Maitrisé'),
(IMPORTANT, u'Important'),
(PRIORITAIRE, u'Prioritaire'),
)
视图
def display(request):
priority_scale = MemoryItem.PRIORITY_CHOICE
# Mixed list
mem_list = list(MemoryItem.objects.all().order_by('?'))
item = mem_list[0]
return render(request, 'memory/display.html',{
'item':item,
'priority_scale':priority_scale,
})
模板
<div class="row">
<!-- x,y tuple is like MAITRISE, u"maitrisé" avec MAITRISE = MAI -->
{% for x,y in priority_scale %}
<!-- if the priority status of the item match the current loop in priority scale list => button should be red -->
{% if y == item.priority %}
<div class="col-xs-2">
<a href=""><button class="btn btn-danger">{{y}}</button></a>
</div>
{% else %}
<div class="col-xs-2">
<a href=" {% url 'memory:change_priority' mem_id=item.id new_priority=x %}">
<button class="btn btn-primary">{{y}}</button></a>
</div>
{% endif %}
{% endfor %}
</div><br>
当然这是基本技能,但文档有点简短
答案 0 :(得分:0)
对于choices
的字段,调用instance.fieldname
会返回字段的实际值。如果您更喜欢选择元组中字段的详细值,则需要调用instance.get_FOO_display()
。对于您的情况,它是item.get_priority_display()
。但请记住,你不能在Django模板中调用类似的函数。因此,调用item.get_priority_display
将获得显示值。