我需要在django模板中进行旋转(行列转置),我很确定ORM无法处理它。是否有像regroup
这样的内置模板标签,它可以处理枢轴。
以下是我需要的东西?
select * from exams;
+------+------+------+-------+
| pkey | name | exam | score |
+------+------+------+-------+
| 1 | Bob | 1 | 75 |
| 2 | Bob | 2 | 77 |
| 3 | Bob | 3 | 78 |
| 4 | Bob | 4 | 80 |
| 5 | Sue | 1 | 90 |
| 6 | Sue | 2 | 97 |
| 7 | Sue | 3 | 98 |
| 8 | Sue | 4 | 99 |
+------+------+------+-------+
列出如下
+------+-------+-------+-------+-------+
| name | exam1 | exam2 | exam3 | exam4 |
+------+-------+-------+-------+-------+
| Bob | 75 | 77 | 78 | 80 |
| Sue | 90 | 97 | 98 | 99 |
+------+-------+-------+-------+-------+
答案 0 :(得分:3)
这个怎么样?
在views.py中......
exams = Exam.objects.all()
transposed = {}
for exam in exams:
transposed.setdefault(exam['name'], {}).update(
{'exam%s' % exam['exam']: exam['score']})
在你的模板中......
<table>
<tr><th>name</th> ... </tr>
{% for name, scores in transposed.items %}
<tr><td>name</td><td>scores.exam1</td><td>scores.exam2</td>
<td>scores.exam3</td><td>scores.exam4</td></tr>
{% endfor %}
</table>
答案 1 :(得分:1)
您是否考虑使用pandas之类的内容?它提供了一个DataFrame对象,可以在python中为您提供透视功能。根据您的需要,您可以使用它查看或在模型中使用它。 有关快速示例,请尝试查看this question