我正在優化我的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