我有一个模型(或实际上有两个模型,但另一个模型不相关)
class Foo(models.Model):
...
bar = models.ForeignKey(Bar,
...
)
当我有一个Foo
:s的QuerySet时,如何获取该QuerySet引用的所有Bar
个实例?
由于我使用的是MySQL,我无法.distinct(['bar'])
答案 0 :(得分:19)
foo_queryset = Foo.objects.filter(attr=value)
referenced_bars = Bar.objects.filter(id__in=foo_queryset.values('bar_id'))
答案 1 :(得分:0)
bars = Bar.objects.filter(foo_set__attr=value)
答案 2 :(得分:0)
您可以使用foo_queryset.bar_set.all()
来获取Bar
的所有实例
foo_queryset = Foo.objects.filter(attr=value)
referenced_bars = foo_queryset.bar_set.all()
Django documentation有更多详细信息。