Django Querysets在View中添加了额外的信息



我目前正在为我的学校做一个小的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,请将其替换为相关名称

相关内容

  • 没有找到相关文章

最新更新