【发布时间】:2012-09-30 14:42:24
【问题描述】:
我有一个我正在尝试优化的 Django 视图。它在页面上显示父对象及其子对象的列表。子模型将外键返回给父模型,因此 select_related 似乎不适用。
class Parent(models.Model):
name = models.CharField(max_length=31)
class Child(models.Model):
name = models.CharField(max_length=31)
parent = models.ForeignKey(Parent)
一个简单的实现使用 n+1 个查询,其中 n 是父对象的数量,即。一个查询获取父列表,然后一个查询获取每个父列表的子。
我编写了一个视图,它在两个查询中完成这项工作 - 一个用于获取父对象,另一个用于获取相关的子对象,然后是一些 Python(我不好意思在此发布)将其全部又复合了。
当我发现自己导入了标准库的collections 模块后,我意识到我可能做错了。可能有一个更简单的方法,但我缺乏 Django 经验来找到它。任何指针将不胜感激!
【问题讨论】:
标签: python django query-optimization django-queryset