我正在优化我的Django应用程序的特定用例。我的第一步是用ValuesQuerySet
替换QuerySet
。这工作得很好,但我想做更多。现在我正在考虑使用Memcache(该应用程序正在Google App Engine上运行)。所以我的计划是基本上把ValuesQuerySet
放在Memcache中。但是我的理解是ValueQuerySet
基本上是一个尚未物化的数据结构。为了使缓存工作,ValueQuerySet
需要首先实现,然后放入Memcache。在Google App Engine上优化我的Django应用程序
按照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中的最佳方法是什么?
参考此票https://code.djangoproject.com/ticket/12549 – catherine 2013-02-09 12:07:21