在现有 Django 查询中获取外键的不同对象
Get distinct objects for foreign key in existing Django query
考虑以下多对一关系。用户可以拥有许多小部件:
class Widget(models.Model):
owner = models.ForeignKey('User')
class User(models.Model):
pass
我有一个相当复杂的查询,returns 我有一个小部件查询集。由此我想列出用户的不同值。
我知道我可以循环我的小部件并使用 .values('owner')
或 {% regroup ... %}
拉出用户,但数据集很大,我想在数据库中这样做,所以它实际上 returns 第一次使用 Widget 的用户。
迄今为止我最好的想法是拿出一个 .values_list('owner', flat=True)
然后用它做一个 User.objects.filter(pk__in=...)
。这将其拉回两个查询,但似乎仍然超出了应有的范围。
有什么想法吗?
使用后向关系:
User.objects.distinct().filter(widget__in=your_widget_queryset)
考虑以下多对一关系。用户可以拥有许多小部件:
class Widget(models.Model):
owner = models.ForeignKey('User')
class User(models.Model):
pass
我有一个相当复杂的查询,returns 我有一个小部件查询集。由此我想列出用户的不同值。
我知道我可以循环我的小部件并使用 .values('owner')
或 {% regroup ... %}
拉出用户,但数据集很大,我想在数据库中这样做,所以它实际上 returns 第一次使用 Widget 的用户。
迄今为止我最好的想法是拿出一个 .values_list('owner', flat=True)
然后用它做一个 User.objects.filter(pk__in=...)
。这将其拉回两个查询,但似乎仍然超出了应有的范围。
有什么想法吗?
使用后向关系:
User.objects.distinct().filter(widget__in=your_widget_queryset)