Отображение имен меток вместо целочисленных полей в шаблонах 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.

Вернуться на верх