【发布时间】:2015-01-16 08:33:41
【问题描述】:
考虑以下多对一关系。用户可以拥有许多小部件:
class Widget(models.Model):
owner = models.ForeignKey('User')
class User(models.Model):
pass
我有一个相当复杂的查询,它返回一个小部件查询集。从中我想列出用户的不同值。
我知道我可以循环我的小部件并使用.values('owner') 或{% regroup ... %} 拉出用户,但数据集很大,我想在数据库中执行此操作,因此它实际上第一次返回用户而不是小部件。
迄今为止,我最好的想法是取出.values_list('owner', flat=True),然后使用它进行User.objects.filter(pk__in=...)。这将其拉回到两个查询,但这似乎仍然超出了应有的范围。
有什么想法吗?
【问题讨论】:
-
您是否尝试将小部件查询添加到像 User.objects.get(widgets__in=...) 这样的查询中?