Получить доступ к значению объекта по другому значению объекта в шаблоне в Django? - PullRequest
0 голосов
/ 17 марта 2020

Это {{ category.id }} возвращает мне 1

Это {{ categories_counts.1 }} возвращает мне данные

Но {{ categories_counts.category.id }} не работает?

Возможно ли получить доступ к значению по значению другого объекта?

views.py:

categories = Category.objects.all()
categories_counts = {}
for category in categories:
    count = Venue.objects.filter(category_id=category.id).count()
    categories_counts[category.id] = count

Итак categories содержит:

<QuerySet [<Category: restaurants>, <Category: sportfitness>, <Category: carservices>, <Category: beautysalons>]>

categories_counts содержит:

{1: 1, 2: 0, 3: 0}

категория Модель:

class Category(models.Model):
    name = models.CharField(max_length=20)
    bg_name = models.CharField(max_length=20, default=None)
    category_bg_name = models.CharField(max_length=100, default=None)

1 Ответ

1 голос
/ 18 марта 2020

Как правило, вы не можете получить доступ к categories_counts[category.id] в шаблоне Django, если не создадите пользовательский тег шаблона, как говорит @sayse в комментариях.

В вашем конкретном случае c вы можете аннотировать набор запросов с местом встречи.

from django.db.models import Count
categories = Category.objects.annotate(num_venues=Count('venue'))

Затем в вашем шаблоне вы можете сделать что-то вроде:

{% for category in categories %}
{{ category.name }} has {{ category.num_venues }} venue(s)
{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...