[英]prefetch by related_name in children foreign key django
我正在嘗試通過相關名稱從父 model 預取相關到子項,但是模板中的查詢集仍然命中 PostgreSQL 中的數據庫,我的模型 B 模型 C 和模型 D 都指向模型 A,當我覆蓋基於通用 class 的視圖查詢集 function它仍然不影響查詢的大小?? 任何線索?
*MODEL
class ModelA(models.Model):
title = models.Charfield(max_lenght=200, null=True, Blank=True)
class ModelB(models.Model):
model_a = models.ForeignKey(ModelA, on_delete=models.CASCADE, related_name="model_a_related")
*VIEW
class ModelAView(DetailView):
model = ModelA
def get_queryset(self):
return super().get_queryset().prefetch_related('model_a_related')
.prefetch_related(…)
[Django-doc]不在同一個查詢中獲取ModelB
,但在第二個查詢中,它批量獲取所選(過濾的) ModelA
的所有相關ModelB
,這與獲取合同它根據ModelA
object 這將是通常的行為。
對於DetailView
[Django-doc] ,它不會做出任何改進。 在DetailView
中,您呈現單個項目,並獲取相關的ModelB
,無論是通過.prefetch_related(…)
還是通過訪問object.model_a_related.all()
完成一個額外的查詢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.