我在项目中考虑了一个评估模型,就像
class Evaluation(models.Model):
question = models.ForeignKey(Question)
value = models.IntegerField('Value')
creator = models.ForeignKey(User)
def __unicode__(self):
return unicode(self.value)
在我的模板中,我想在表格中显示不同的评价
| question1 | creator1 : evaluation of creator1
| creator2 : evaluation of creator2
-------------------------------------------------
| question2 | creator1 : evaluation of creator1
| creator2 : evaluation of creator2
...
为此我必须区分我的查询集中的创建者,与问题相关。
不幸的是我无法创建过滤器或分组,这就是我想要的。 如何根据引用的问题轻松选择创建者及其评估?
答案 0 :(得分:0)
您希望{% regroup %}
模板标记(https://docs.djangoproject.com/en/1.6/ref/templates/builtins/#regroup)按Evaluation
应用于question
查询集顺序,最好使用select_related()
(以避免N + 1查询问题)
# views.py
def myview(request):
context = {
"evaluations":Evaluation.objects.order_by("question", "creator").select_related()
}
return render(request, "mytemplate.html", context)
和你的模板:
# mytemplate.html
{% regroup evaluations by question as questions_list %}
<ul>
{% for question in questions_list %}
<li>{{ question.grouper }}
<ul>
{% for evaluation in question.list %}
<li>{{ evaluation.creator }}: {{ evaluation }}
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>