1

Django アプリの特定のユース ケースを最適化しています。QuerySet私の最初のステップは、 aを aに置き換えることでした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 のドキュメントが間違っているか、少なくとも誤解を招くものであることを意味します。

何か不足していますか、それともドキュメントが実際に間違っていますか? ValueQuerySetMemcache に保存できるように結果を具体化する最良の方法は何でしょうか?

4

1 に答える 1

0

ドキュメントからそのビットを読み違えています。queryset.list()「メソッドを呼び出す」とは言っていません。「それを呼び出す」と言っlist()ています。言い換えれば、呼び出しlist(my_queryset)ではなくmy_queryset.list()- であり、実際、その直後の例で明示的に示されています。

これはサブクラス化とは関係がないことに注意してください。メソッドもQuerySetありません。list()

于 2013-02-09T19:37:29.287 に答える