1つのQuerySetを評価し、次に別のQuerySetを評価していますが、2番目は最初のサブセットです。私はこれを効率的な方法で実行しようとしています。データベースの呼び出しはできるだけ少なくしています。(これは以前に尋ねられましたが、正直に言って、私は答えを完全に理解していませんでした、そしてそれらが私が考えていることに完全に当てはまるかどうかはわかりません。)
Djangoドキュメントのサンプルのウェブログモデルを使用すると、ビューでは、これは最適化を試みる前のコードです。
myblog = Blog.objects.get(pk=1)
d={} #going to pass this to my template
# not using count()
d['num_of_entries'] = len(myblog.entry_set.all())
# not using exists()
d['is_jolly'] = bool(Entry.objects.filter(blog=myblog, headline__startswith='Jolly'))
# ... other code but no further use of database in this view
2番目のQuerySetは、最初のQuerySetのサブセットです。サブセットを取得するために純粋なPythonを使用する必要がありますか(したがって、1つのQuerySetのみを評価します-1つ少ないデータベース呼び出し)?
または、おそらく単に次のことをしますか?
# other code as above
d['num_of_entries'] = myblog.entry_set.count()
d['is_jolly'] = Entry.objects.filter(blog=myblog, headline__startswith='Jolly').exists()
# ... other code but no further use of database in this view