如何在模板中获取对象/元素(外键)的数量

时间:2011-06-16 20:21:24

标签: python django django-models

如何获得问题的答案数量

class Answers(models.Model):
    ...
    question = models.ForeignKey(Question, related_name='Question')

当我

return render_to_response('profile.xhtml',
                      {'questions': Question.objects.filter(author=details_profile),},
                      context_instance=RequestContext(request))

在模板中我想获得每个问题的答案数量({{q.answer.count}}只是一个例子)

{% for q in questions %}
    {{ q.title }}, Answers: {{ q.answer.count }}
{% endfor %}

nvm我只是在models.py

中制作
class Question(models.Model):
    ...
    def count_it(self):
        return Answers.objects.filter(question=self).count()

并在模板{{q.count_it}}

中使用

2 个答案:

答案 0 :(得分:1)

如果你没有设置related_name='Question',你就可以在模板中获得这样的计数:

{{ q.answer_set.count }}

...因为“answer_set”是默认的related_name。按原样,你应该可以使用:

{{ q.Question.count }}

但那太丑了!希望您现在已经知道related_name是您要用来将返回引用到当前模型的名称您引用的模型在ForeignKey中。所以最好的选择是:

class Answers(models.Model):
    ...
    question = models.ForeignKey(Question, related_name='answers')

然后在模板中:

{% for q in questions %}
    {{ q.title }}, Answers: {{ q.answers.count }}
{% endfor %}

答案 1 :(得分:0)

{% for q in questions %}
    {{ q.title }}, Answers: {{ q.Question|length }}
{% endfor %}

我建议您将相关名称更改为“答案”或其他内容。