我有一个模型(实际上是2个模型,但另一个不那么相关)
class Foo(models.Model):
...
bar = models.ForeignKey(Bar,
...
)
当我有一个Foo
的QuerySet时,如何获取该QuerySet引用的所有Bar
实例?
由于我正在使用MySQL,无法使用.distinct(['bar'])
。
我有一个模型(实际上是2个模型,但另一个不那么相关)
class Foo(models.Model):
...
bar = models.ForeignKey(Bar,
...
)
当我有一个Foo
的QuerySet时,如何获取该QuerySet引用的所有Bar
实例?
由于我正在使用MySQL,无法使用.distinct(['bar'])
。
foo_queryset = Foo.objects.filter(attr=value)
referenced_bars = Bar.objects.filter(id__in=foo_queryset.values('bar_id'))
bars = Bar.objects.filter(foo_set__attr=value)
foo_queryset.bar_set.all()
来获取你的 Bar
的所有实例。foo_queryset = Foo.objects.filter(attr=value)
referenced_bars = foo_queryset.bar_set.all()
Django文档中有更多详细信息。
in
字段查询的链接。 - Timmy O'Mahonybar_ids
,然后将其传递给__in
子句Bar.objects.filter(id__in=set(foo_queryset.values('bar_id')))
. 显然,如果您有很多Foo
对象,这也可能很慢。 - Iain Shelvingtonbar_id
,那该怎么办? - decadenza