Невозможно получить название категории с помощью шаблонов в Django

Я работаю над проектом Django и хочу получить название категории в моем шаблоне, например Adventure, Hiking... но вместо этого он отображает идентификаторы категории, например 1,2,3. Вместо того, чтобы вывести название категории, он выводит мне id этой категории. Может ли кто-нибудь помочь мне с этим?

{% for data in tourData %}
 {{data.category}}
{% endfor %}

models.py

class Tour(models.Model):
category_choices=[('1','Adventure'),('2','Trekking'),('3','Hiking')]
category=models.CharField(max_length=1,choices=category_choices,default='1')

view.py

def recommendations(request):
if request.method=='POST':
    contents=Tour.objects.all()
    category1= request.POST['category']  #Retrieves the category entered by the user
    category2=request.POST['place'] 
    tourData = Tour.objects.all().filter(category=category1,place=category2).order_by('-rating').values()
    context={
        'tourData':tourData
    }
    return render(request,"base/recommendations.html",context)
else:
   tourData=Tour.objects.all().order_by('-rating').values()
   context={'tourData':tourData
   }
   return render(request,"base/recommendations.html",context)

Вам необходимо использовать get_field_display в вашем шаблоне, т.е.

{{ data.get_category_display }}

Это покажет второе значение кортежа в вариантах вашей модели, а не первое (первое - это то, что действительно попадает в базу данных).

Кстати, я бы рекомендовал изменить формат вашей переменной tourData с camelCase на snake_case - tour_data - это более питонично.

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