Pav*_*mar 5 django django-models prefetch
假设我有以下模型
class Foo(models.Model):
    ...
class Prop(models.Model):
    ...
class Bar(models.Model):
    foo: models.ForeignKey(Foo, related_name='bars', ...)
    prop: models.ForeignKey(Prop, ...)
现在我想进行以下查询。
foos = Foo.objects.prefetch_related('bars__prop').all()
确实上述查询使得3级数据库的呼叫或仅2(select_related用于prop从bar),因为只有一个prop与之相关联bar
如果需要 3 次调用,有没有办法通过使用 selected_related for bar -> prop
您可以使用Prefetch该类来指定所使用的查询集,prefetch_related()并通过这种方式将其与select_related():
from django.db.models import Prefetch
bars = Bar.objects.select_related('prop')
foos = Foo.objects.prefetch_related(Prefetch('bars', queryset=bars)).all()
请注意,这应该是两个查询,一个用于Foo对象,另一个用于获取Bar使用Prop.
| 归档时间: | 
 | 
| 查看次数: | 2683 次 | 
| 最近记录: |