Как передать определенное значение внутри кортежа, который также является кортежем в Python в Django?

У меня есть словарь Categories, который является кортежем внутри кортежа, однако я хочу изолировать только литералы --> названия категорий

from django.db import models

CATEGORIES = (
    ('a', 'Clothing'),
    ('b', 'Electronics'),
    ('c', 'Furniture'),
    ('d', 'Kitchen'),
    ('e', 'Miscellaneous'),
    ('f', 'None'),
)

но в другом файле views.py есть следующее

def show_category_listings(request, category):
    listings = Listing.objects.filter(category__in = category[0])
    cat = dict(CATEGORIES)
    return render(request, 'auctions/categSpecific.html', {
        "listings": listings,
        "category": cat[category]
    })

и, наконец, в html есть следующее <li>Category: {{ listing.category }}</li> но я вижу только буквы вместо имен. смотрите в html

есть ли способ получить только названия категорий? Я не смог разобраться с передачей значений в части views.py.

В Django есть несколько магических методов. Одним из них является get_FOO_display (), который отображает значение поля в человекочитаемом формате.

Следующий код отображает значение имени в поле выбора.


<li>Category: {{ listing.get_category_display }}</li>

Прочитайте документацию здесь: https://docs.djangoproject.com/en/3.2/ref/models/instances/#django.db.models.Model.get_FOO_display

Задайте это в шаблоне?

"category_names" : [ x[1] for x in CATEGORIES]

или даже

"category_lookup" : { x[0]:x[1] for x in CATEGORIES }

Также смотрите документацию (get_FOO_display() ). Модели Django включают методы для перевода из значения поля модели в человекочитаемую форму. Вы можете вызвать этот метод модели из шаблона как

{{ instance.get_fieldname_display }} 
Вернуться на верх