これらをdjangoモデルと想定します。
class Question():
question = charfield()
choice = charfield(choices = answer_choice)
class Answer():
question = models.foreignkey(Question, related_name = 'answers')
answerer = models.foreignkey('auth.User')
answer = models.charfield()
100個の質問を表示し、それぞれUser
が回答できるページを作成していますが、各質問の回答を変更することはできません。質問ごとに、にがUser
すでに存在するかどうかを確認する必要がありAnswerer
ます。次に、テンプレートタグを作成します。@ register.filter def this_user_exists(user、obj):obj = obj.answers.filter(answerer_id = user.id)return obj
次に、テンプレートで:
# obj is list of question
{% if not user|this_user_exists:obj %}
# can answer
{% else %}
# cannot answer
{% endif %}
問題は、すべての質問に対して1つのクエリを生成するため、100の質問に対して100のクエリを生成することです。このクエリを試して質問を生成しQuestion.objects.all()
ましQuestion.objects.prefetch_related('answers')
たが、それでも問題が発生しました。あまり多くのクエリを行わずにこれを達成するためのより良い方法はありますか?