私は2つのモデルがあります。それらの質問と回答を呼び出す:問合せモデルとすべてのForeignKeyの関連付けに対するn + 1問合せの回避
class FacetQuestion(models.Model):
the_question = models.CharField(max_length=50)
class FacetAnswer(models.Model):
question = models.ForeignKey(FacetQuestion)
display_order = models.SmallIntegerField()
the_answer = models.CharField(max_length=1024)
私が選んだあたりに命じた質問と回答で、1つのリスト内のすべての質問と回答を提示したいと思います:
Q1
A1
A2
A3
Q2
A10
A9
A4
n + 1個のデータベースクエリを作成したり、愚かなテンプレートを作成することはありません。
select title_short,answer_note from coat_facetquestion
join coat_facetanswer on (coat_facetanswer.question_id=coat_facetquestion.id)
order by coat_facetquestion.id,coat_facetanswer.display_order;
はジャンゴでの最善の方法は何だし、どのようなテンプレートは次のようになります?私のようなデータベースの男のために簡単に参加だが、トトは、我々はもはやSQLの土地ではないよ、私たちに通知し
<ul>
{% for q in questions %}
<li>{{ q.the_question }}</li>
{% for a in q.FacetAnswers_set.all %}
<li>{{ q.the_answer }}</li>
{% endfor %}
{% endfor %}
</ul>
私は古いトラックのビットがdjango-batch-selectです。 select_related()もありますが、答えが必要なようですが、そうであれば、ドキュメントはそれほど明確ではありません。
select_related()は、それが完全な解決策ではないと考えています。ありがとう。 – Bryce