私が質問を正しく述べているかどうかさえわかりません。これが状況です。外部キー関係にアクセスして生成されたクエリセットがあります。Djangoドキュメントの標準のブログ/エントリモデルを使用して、ブログを選択し、一連のエントリがあるとします。
entries = Blog.objects.get(id=1).entry_set.all()
したがって、ブログにはいくつかのエントリがあり、おそらくゼロです。次に、カレンダーを作成して、ブログエントリがある日を示します。したがって、私の考えは、その月の日などのリストを繰り返し処理し、エントリのクエリセットでその日付のエントリを確認することです。質問は、これを行うための最良の方法は何ですか?私の最初の考えは次のようなことをすることでした
dayinfo = [] # we will iterate over this in the template
for curday in month:
dayinfo.append({'day':curday, 'entry':entries.filter(day=curday)})
問題は、フィルター呼び出しが新しいクエリセットを返し、ループの反復ごとに新しいSQL呼び出しを生成することです。エントリが存在する場合はエントリからエントリオブジェクトを取り出して、カレンダーに貼り付ける必要があります。では、これを行うための最良の方法は何ですか?私はこれを機能させました:
dayinfo.append({'day':day, 'entry':[e for e in entries if e.day == curday][0]})
これでは、新しいSQL呼び出しは生成されません。しかし、それは確かに醜いようです。