【发布时间】:2025-12-06 07:10:01
【问题描述】:
我有三个模型:公司、资产和用户。每个公司都有很多资产(ForeignKey),每个资产都有一个用户(ForeignKey,因为一个用户可能拥有多个资产)。
我想运行一个查询,返回给定用户拥有资产的公司列表,以及他们在每家公司拥有的资产数量。
我曾尝试在 python 中这样做,如下所示:
companies = Company.objects.filter(asset__owner=self.request.user)
context['investments'] = [(x, Asset.objects.filter(company=x, owner=self.request.user).count()) for x in companies]
这可能并不令人惊讶,因为一家公司可以拥有 100,000 项资产。似乎在数据库级别这样做会更好,这导致我查看注释和聚合,但我无处可去。有人能指出我正确的方向吗?
【问题讨论】:
-
如果您在此处添加相关模型会很有帮助。
-
一篇非常好的关于 django 性能的文章impythonist.wordpress.com/2016/02/21/…。另请查看有关 prefetch_related 和 select_related 查询集的 django 文档docs.djangoproject.com/el/2.1/ref/models/querysets
标签: django django-models django-queryset