簡體   English   中英

通過子外鍵中的 related_name 預取 django

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM