Djangoは、すべてのクエリセットが自動的にキャッシュされるとドキュメントで述べています。https://docs.djangoproject.com/en/dev/topics/db/queries/#caching-and-querysets。しかし、これらはこの機能の詳細についてはそれほど具体的ではありませんでした。
彼らが示した例は、qsをpython変数に保存することであり、最初の呼び出しの後の後続の呼び出しはキャッシュから取得されます。
queryset = Entry.objects.all()
print([クエリセット内のpのp.headline])#クエリセットを評価します。
print([p.pub_date for p in queryset])#評価からキャッシュを再利用します。
したがって、ユーザーがビューをロードしたときに、変数なしで2つの正確なクエリセット呼び出しが行われた場合でも、結果はキャッシュされませんか?
# When the user loads the homepage, call number one (not cached)
def home(request):
entries = Entry.objects.filter(something)
return render_to_response(...)
# Call number two, is this cached automatically? Or do I need to import cache and
# manually do it? This is the same method as above, called twice
def home(request):
entries = Entry.objects.filter(something)
return render_to_response(...)
わかりにくい場合は、メソッドを2回貼り付けて、ユーザーが2回呼び出しているように見せました。これは、1つのメソッドだけです。エントリは自動的にキャッシュされますか?
ありがとう