【发布时间】:2010-12-15 08:03:28
【问题描述】:
由于 m2m 关系,我遇到了 Django 的性能问题。我有一个包含Something_instance.item_set 的Something 对象列表,因此我多次调用Something_instance.item_set.all()。我想将该查询缓存到 Something_instance 中,这样我就不必运行这么多查询。这可能吗? (这本质上是一种让 select_related() 为 m2m 工作的技巧)。
编辑: 以下 2 sn-ps 显示了我遇到的问题。在views.py 中,我正在查询m2m 关系。
for t in items:
try:
t.price = t.user_item_rel_set.get(user=u).payment_amount
except:
t.price = -1 * t.buyer_item_rel_set.get(buyer=u).payment_amount
return items
另外,我的模型中的一个函数:
def listBuyers(self):
return self.buyer_item_rel_set.all()
我有这个是因为我在我的模板中使用它来从这些元素中获取信息。
查询 m2m 关系最终会运行两次:一次在 views.py 中,然后一次在模板中。我想在视图中获取查询集,将其附加到模型实例,然后将其提供给模板,因此它(和 views.py 代码)使用缓存的查询集,而不是再次获取。
【问题讨论】:
标签: django