Отображение имен меток вместо целочисленных полей в шаблонах Django
В качестве части моих моделей у меня есть IntergerField "choices".
Эти варианты были помечены. (Метка 1 = солома, метка 2 = желтый...)
Однако в HTML отображается целое число, а не реальные метки.
Чтобы вернуть метки, а не интергер поля?
Нужно ли это делать в представлениях? Или я должен сделать это непосредственно в html-файле?
Код ниже:
Модели
CHOICE1=(
('',''),
(1,'Straw'),
(2,'Yellow'),
)
class Model1(models.Model):
user = models.ForeignKey(User,blank=True,on_delete=models.CASCADE)
Choice_A = models.IntegerField(choices=Choice1,default=0)
Виды
def account(request):
review_list = Model1.objects.all
return render(request,"main/account.html", {'review_list':review_list})
HTML
<h6>Champagnes</h6>
{% for Model1 in review_list%}
<table class="table table-hover table-striped table-bordered ">
{% if Model1.user == user%}
<tr>
<th>Text</th><th>{{Model1.Choice_A }}</th>
</tr>
{%endif%}
</table>
{% endfor %}
Вам необходимо использовать следующее в вашем шаблоне:
{{ Model1.get_Choice_A_display }}
Вместо целого числа будет отображена строка
Вы делаете это с помощью метода .get_fieldname_display(…)
[Django-doc], поэтому здесь get_Choice_A_display
:
<th>Text</th><th>{{Model1.get_Choice_A_display }}</th>
Примечание: обычно имена полей в модели Django записываются в snake_case, а не PascalCase, поэтому должно быть:
choice_a
вместо.Choice_A