Python Django预取_与具有多个多个关系的模型相关

Python Django预取_与具有多个多个关系的模型相关,python,django,django-models,Python,Django,Django Models,假设我在Django有几个型号: class Foo(models.Model): bars = models.ManyToManyField(Bar) bazs = models.ManyToManyField(Baz) class Bar(models.Model): quxs = models.ManyToManyField(Qux) 我可以使用prefetch_related获取属于Foo的所有条和属于Bar的所有qux,包括: Foo.objects.prefetch_relate

假设我在Django有几个型号:

class Foo(models.Model):
bars = models.ManyToManyField(Bar)
bazs = models.ManyToManyField(Baz)

class Bar(models.Model):
quxs = models.ManyToManyField(Qux)
我可以使用prefetch_related获取属于Foo的所有条和属于Bar的所有qux,包括:

Foo.objects.prefetch_related('bars__quxs')
但是,我如何使用预回迁(prefetch_)来获取这些信息以及属于Foo的所有baz?我想:

Foo.objects.prefetch_related('bars__quxs', 'bazs')

工作?

是的。您可以将多个查找传递到
.prefetch_related()

,因此:Foo.objects.prefetch_related('bar_qxs','baz')是的,这是正确的。这对你不管用吗?我知道只要
bar
baz
在Foo上有多对多的字段就应该工作。我想我不明白的是现在如何访问
Foo.bar.qux
。通常,它只是
Foo.baz.all()
,但我无法通过
Foo.bar.all().qxs.all()
访问
qxs
。我想我找到了答案。这是唯一的方法吗?你是想在
Foo.bar.quxs上进行过滤,还是一有它就直接访问它?要访问QUX,首先抓取其中一个条,然后访问它的QUX。例如:
foo_对象.bar.all()[0].quxs.all()
,它将访问foo_对象中第一个bar的所有qux。