9

我有一个模型(或者实际上是 2 个模型,但另一个不相关)

class Foo(models.Model):
    ...
    bar = models.ForeignKey(Bar,
        ...
    )

当我有一个Foo:s 的 QuerySet 时,如何获取Bar该 QuerySet 引用的所有实例?

由于我使用的是 MySQL,我不能这样做.distinct(['bar'])

4

3 回答 3

26
foo_queryset = Foo.objects.filter(attr=value)
referenced_bars = Bar.objects.filter(id__in=foo_queryset.values('bar_id'))
于 2012-09-26T11:42:28.887 回答
0
bars = Bar.objects.filter(foo_set__attr=value)
于 2012-09-26T11:57:55.977 回答
0

你可以foo_queryset.bar_set.all()用来获取你的所有实例Bar

foo_queryset = Foo.objects.filter(attr=value)
referenced_bars = foo_queryset.bar_set.all()

Django 文档有更多详细信息。

于 2020-01-18T02:17:06.847 回答