【发布时间】:2020-08-19 21:09:03
【问题描述】:
我有一些模型:
F ---> D ---> C <--- B ---> A
class A:
-
class B:
a = ForeignKey
c = ForeignKey
class C:
-
class D:
c = ForeignKey
class F:
d = ForeignKey
我正在使用这个查询:
querset = B.objects.select_related('c').filter(a=a_instance)
在模板中显示结果:
{% for b in querset %}
{% for d in b.c.d_set.all %}
{% for f in d.f_set.all %}
{% endfor %}
{% endfor %}
{% endfor %}
如何减少数据库提示? 可以这样使用 Prefetch 还是我错了?
querset = B.objects.select_related(
'c'
).prefetch_related(
Prefetch('c__d_set__f_set')
).filter(
a=a_instance
)
django = 2.2
谢谢
【问题讨论】:
标签: django performance orm django-queryset