Python 是否通过Django中模板中的其他对象值访问对象值?

Python 是否通过Django中模板中的其他对象值访问对象值?,python,django,templates,Python,Django,Templates,这个{{category.id}返回我1 这个{{categories\u counts.1}}返回我的数据 但是{{categories\u counts.category.id}不起作用 是否可以通过其他对象值访问值 视图。py: categories = Category.objects.all() categories_counts = {} for category in categories: count = Venue.objects.filter(category_id=

这个
{{category.id}
返回我1

这个
{{categories\u counts.1}}
返回我的数据

但是
{{categories\u counts.category.id}
不起作用

是否可以通过其他对象值访问值

视图。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
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)
因此
categories
containst:

<QuerySet [<Category: restaurants>, <Category: sportfitness>, <Category: carservices>, <Category: beautysalons>]>
类别模型:

categories = Category.objects.all()
categories_counts = {}
for category in categories:
    count = Venue.objects.filter(category_id=category.id).count()
    categories_counts[category.id] = count
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)

通常,除非您创建自定义模板标记,否则无法访问Django模板中的
categories\u counts[category.id]
,如@sayse在注释中所述

在您的特定情况下,您可以使用场地计数查询集

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 %}

如果显示视图和模板,可能还有另一种方法可以循环浏览字典,例如
{%for category,count in categories\u counts.items%}{category}{count}{%endfor%}
。我猜
categories\u counts
是一个列表,在
categories\u counts['category']
这就是它不起作用的原因。@Alasdairudpated@TimTisdall更新了。