よくわからない質問を正しく述べています。ここに状況があります。私は外部キーの関係にアクセスすることによって生成されたクエリセットを持っています。 Djangoのドキュメントに標準のブログ/エントリーモデルを使用して、のは、私がブログを選択し、現在のエントリのセットを持っているとしましょう:新しいクエリーセットを作成せずに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呼び出しを生成しません。しかし、それは確かに醜いようです。
ありがとう、それは私が必要としていたものです。これはDjangoの問題よりも一般的なコーディングの問題でした。私は、私がやろうとしていることをやるための簡単な方法があることを知っていました! – chacmool