【问题标题】:Django Querysets adding additional information inside ViewDjango Querysets 在视图中添加附加信息
【发布时间】:2021-02-06 09:39:52
【问题描述】:

我目前正在为我的学校开发一个小型 django 应用程序。 我有两个模型涉及这个问题:“类别”和“设备”,它们以一对多的关系连接category---

我为类别概述添加了一个页面/模板/视图,其中包含一个包含每个已创建类别的所有相关信息的大表。

像这样查询类别:

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()

我无法通过以下方式访问模板中的 amount

{{ category.amount }}

解决方案? 由于向类别模型添加字段不是一种选择,并且使代码更加不灵活,因此我正在寻找一种方法将信息加入/合并到类别查询集。

我想这是一个非常基本的问题,但我认为我缺少一些关于 Querysets/Mege/Join 的基本知识。

感谢您帮助我。

【问题讨论】:

    标签: python sql django django-views django-templates


    【解决方案1】:

    您可以使用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 替换为相关名称。

    【讨论】:

      猜你喜欢
      • 2020-12-02
      • 1970-01-01
      • 2021-10-03
      • 2020-05-19
      • 1970-01-01
      • 1970-01-01
      • 2020-10-19
      • 2023-02-03
      • 1970-01-01
      相关资源
      最近更新 更多