我目前正在为我的学校做一个小的django应用程序。在这个问题中有两个模型:"category"和device",它们以一对多的关系连接category——<device(s)>
我为类别概述添加了一个页面/模板/视图,其中包含一个大表,其中包含所创建的每个类别的所有相关信息。
像这样查询类别:
categories = Category.objects.filter(is_activ=True)
并像这样在模板中显示它们:
{% for category in categories %}
{{ category.title }}
{{ category.otherField }}
{% endfor %}
没有问题。
问题:
现在我需要在表中添加一个额外的字段,其中包含类别中的设备数量。由于设备数量不在我的类别模型中,而是可以这样确定:
amount_devices_in_c1 = Device.objects.filter(category=c1).count()
我不可能在模板中访问数量,只需执行:
{{ category.amount }}
解决方案吗?由于添加字段到类别模型不是一个选项,使代码更不灵活,我正在寻找一种方法来加入/合并信息到类别Queryset。
我想这是一个非常基本的问题,但我想我缺少一些关于Querysets/Mege/Join的基本知识。
您可以使用annotate
向您的查询集添加额外的信息:
from django.db.models import Count
categories = Category.objects.filter(is_activ=True).annotate(device_count=Count('device_set'))
现在在模板中您可以写{{ category.device_count }}
如果您设置了device_set
,请将其替换为相关名称