【发布时间】:2014-09-23 16:05:50
【问题描述】:
假设我有如下模型:
class Company(models.Model):
name = models.CharField(max_length=255)
class Unit(models.Model):
name = models.CharField(max_length=255)
status = models.CharField(max_length=255)
company = models.ForeignKey(Company)
我想在单个查询中获取所有公司的列表,并计算他们有多少单位“离线”以及有多少单位“在线”。
我知道如何通过以下方式获取其中之一的列表:
offline = Company.objects.all().filter(unit__status="offline").annotate(offline_count=Count("unit"))
online = Company.objects.all().filter(unit__status="online").annotate(online_count=Count("unit"))
我希望能够访问生成的查询集对象,例如:
companies[0].offline_count
companies[0].online_count
这可能吗?
【问题讨论】:
-
@slim_ch 我认为自定义管理器根本不会提供帮助。 Curtis 需要的是条件聚合,它们将来会出现在 Django code.djangoproject.com/ticket/14030 github.com/django/django/pull/2496#discussion_r12729133
标签: django filter annotations django-queryset