【问题标题】:django-tables2 - How to "Pivot" a table so values become column headings?django-tables2 - 如何“透视”表格,使值成为列标题?
【发布时间】:2015-06-05 22:26:37
【问题描述】:

您好,我是 python 的新手/中级人员,对 Django 和 Web 应用程序非常陌生。我已经能够弄清楚让我的应用程序运行并处理基本输入/输出的大部分内容。

我开始为最终用户格式化我的数据,我发现 django-tables2 看起来很有前途,但我无法按照自己的意愿自定义它。

基本上 django-tables2 直接从模型中获取一些数据,并将其格式化如下:

+------------------------+
| ID | Foo  | Bar  | Num |
+------------------------+
| 1  | Foo1 | Bar1 | 20  |
| 2  | Foo1 | Bar2 | 25  |
| 3  | Foo2 | Bar1 | 30  |
| 4  | Foo2 | Bar2 | 30  |
+------------------------+

(这在某种程度上基于我的数据,但要点是它为每个 ID 显示一行)。

我想做的是改变它,使数据组织成这样:

+--------------------+
| Foos | Bar1 | Bar2 |
+--------------------+
| Foo1 | 20   | 25   |
| Foo2 | 30   | 30   |
+--------------------+

到目前为止,我的代码几乎与django-tables2 tutorial 中的代码相同,并且仅适用于第一种方式。我已经尝试过手动更改列名,甚至通过模板自己构建了它的一部分,但我一直坚持将值填充到正确的位置。

我愿意以任何方式解决我的问题。

奖励:我已经能够使用表单成功地将数据添加到我的表格中,但我希望能够在表格本身中添加数据 。 strong>(像电子表格)

我研究过使用 jquery,我认为它有很多方法可以解决这个问题,但我对此几乎一无所知,而且似乎我必须花很多时间来追赶才能使用它。这里有什么想法吗?*

【问题讨论】:

标签: python django django-tables2


【解决方案1】:

如果我没看错的话,我认为你仍然对如何旋转表格感到困惑

您可以使用 PANDAS 做到这一点。 Pandas 使用数据框而不是查询集,因此您还需要 django-pandas。 将这些安装并添加到您的模型后,您可以查询数据,转换为数据框,然后创建您的数据透视表。然后您将拥有一个数据框结构,我不确定如何将其恢复为可以在 django 本地使用的格式,但我认为您将走上正确的道路。

示例代码:

queryset = Model.objects.all()
dataframe = queryset.to_dataframe()
pivot = dataframe.pivot('foo', 'bar')

http://pandas.pydata.org/pandas-docs/stable/reshaping.html 会帮助你。

希望有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多