通过 related_name 在子外键 django 中预取

prefetch by related_name in children foreign key django

我正在尝试通过相关名称从父模型预取到子模型,但是模板中的查询集仍然命中 PostgreSQL 中的数据库,我的 modelB modelC 和 ModelD 都指向 modelA 并且当我覆盖通用class 基于视图queryset函数它仍然不影响查询的大小??有什么线索吗?

*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] notsame 查询中获取 ModelBs,但在 second 查询在其中批量获取所选(过滤)ModelA 的所有相关 ModelB,这与获取它的合同 per ModelA 对象这将是通常的行为。

对于DetailView [Django-doc],因此不会有任何改善。在 DetailView 中,您呈现一个 单个 项目,并获取相关的 ModelBs,无论它是通过 .prefetch_related(…) 还是通过访问 object.model_a_related.all() 进行 一个 额外查询。