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更新了。