【发布时间】:2013-02-09 11:52:39
【问题描述】:
我正在优化我的 Django 应用程序的特定用例。我的第一步是将QuerySet 替换为ValuesQuerySet。这工作得很好,但我想做更多。现在我正在考虑使用 Memcache(该应用程序在 Google App Engine 上运行)。所以我的计划是基本上把ValuesQuerySet放在Memcache中。但是据我了解,ValueQuerySet 基本上是一个尚未物化的数据结构。为了使缓存工作,ValueQuerySet 需要先实现,然后放入 Memcache。
根据Django docs:
list(). Force evaluation of a QuerySet by calling list() on it.
和:
Finally, note a ValuesQuerySet is a subclass of QuerySet, so it has all methods of QuerySet.
但是当我尝试my_values_qs.list() 时,它会抛出异常:
AttributeError: 'ValuesQuerySet' object has no attribute 'list'
因此,尽管ValuesQuerySet 是QuerySet 的子类,但它显然不能list() 其内容。如果属实,则意味着 Django 文档是错误的或至少具有误导性。
是我遗漏了什么还是文档确实错了?将ValueQuerySet 的结果具体化以便我可以将其存储在 Memcache 中的最佳方法是什么?
【问题讨论】:
标签: django google-app-engine optimization