0

私のテンプレートでは、Answer.Value = "YES" の質問に対するすべての回答の数を取得したいと考えています。

私は2つのモデルを持っています:

class Question(models.Model):
    question = models.CharField(max_length=100)

class Answer(models.Model):
    question = models.ForeignKey(Question)
    value = models.CharField(max_length=3)

私の見解:

def questn(request, question_id):
    qobj = Question.objects.select_related().get(id="1")
    return render(request, 'base.html', {'qobj': qobj})

私のテンプレート (base.html):

{{ qobj.answer_set.count }} //returns total count of all answers
{{ qobj.answer_set.filter(value="Yes").count }} //breaks my page...

この質問に対するすべての「はい」の回答の数を取得する適切な方法は何ですか?

4

2 に答える 2

1

Django は、ビューにロジックを配置する必要があるように構築されています。テンプレートに「高度なロジック」を含めることは想定されていません。

ビューでクエリを実行し、結果をテンプレートに送信します。

    return render(request, 'base.html', {'qobj': qobj, 'yes_count': qobj.answer_set.filter(value="Yes").count()})

テンプレート:

{{ yes_count }}
于 2013-10-04T17:03:34.647 に答える
0

カスタム テンプレート フィルターを作成するか、目的の効果を得るためにモデル メソッドを使用することもできます。それが「Djangoist」の方法だと思います。

独自のテンプレート タグとフィルターの作成に関するドキュメント:

https://docs.djangoproject.com/en/dev/howto/custom-template-tags/

関連する質問の例:

https://stackoverflow.com/a/1333277/1453607

あなたの質問は、これとほとんど同じです:

django テンプレート システム、モデル内で関数を呼び出す

于 2013-10-04T19:27:36.923 に答える