Django-使用ORM的嵌套关系查询

时间:2018-06-21 21:07:37

标签: django orm django-queryset django-related-manager

因为我需要避免递归导入,并以Group对象作为查询的起点(这就是为什么我不能直接导入Action对象的原因)。

关系为Group-> Component-> ComponentVersion-> Action

例如,Group.components.all()返回查询集中的所有组件。

另外[component.versions.all() for component in Group.components.all()]返回查询集的列表,其结果是所有版本。随后,.actions.all()将为理解中返回的每个actions返回ComponentVersion的所有查询集。

执行此操作的最佳方法是避免对数据库进行不必要的调用并提高可读性?

1 个答案:

答案 0 :(得分:1)

Prefetch Related从这里开始,这将运行4个查询,但是将立即检索所有数据,而不会进行迭代和多次查询。

Group.objects.all().prefetch_related('components', 'components__versions', 'components__versions__actions')