3

我需要在 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 |
+------+-------+-------+-------+-------+
4

2 回答 2

3

这个怎么样?

在你的意见中.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>  
于 2012-05-21T14:03:30.590 回答
1

您是否考虑过使用pandas 之类的东西?它提供了一个 DataFrame 对象,为您提供 Python 中的数据透视功能。您可以根据您的需要在我查看或模型中使用它。举个简单的例子,试着看看这个问题

于 2012-05-22T14:05:54.717 回答