好的 - 所以我实际上想要展示的是一家使用基金会计的公司的综合 Assets 负债表。
但为了简单起见,我将使用一个类比。
假设一群人要去公路旅行。领队对每个人说,“给我一张 list ,列出你要我为这次旅行购买的所有杂货”。所有想去的人都把名单递给他。根据该列表,领导者汇总了一个主列表,从中可以去杂货店购物。
主要有两个未知数:
- 有多少人要去旅行,从而提供一个列表
- 每份 list 上的元素(和数量)
例如,假设有两个人正在提供列表,他们可能看起来像这样:
A :
- 4个苹果
- 6个香蕉
- 1 盒 cookies
B:
- 2个香蕉
- 4个橙子
- 1个西瓜
从这两个列表中,领导者必须生成如下列表:
Person A B Total
------------
Apples 4 0 4
Bananas 6 2 8
Oranges 0 4 4
Watermelon 0 1 1
----------------------------
**Fruit** 10 7 17
Box of Crackers 1 0 1
----------------------------
**Other** 1 0 1
您可以看到最终列表是一个矩阵,其中包含每个项目(行)的总计,然后再次对每个主要类别(水果/其他)进行总计。有了两个未知数(人/元素),这个矩阵可以有任意数量的人(列)和任意数量的元素(行)。此外,该列表被分为“水果”和“其他”,以及这些组中的总数。
我需要弄清楚如何显示此类数据(但用于会计)。我试过使用列表,我将 A 的所有项目放入一个列表,将 B 的所有项目放入另一个列表,然后遍历我的 Django 模板上的列表,但这并不是那么好用。
我可以想象有多种方法可以解决这个问题,我只是不确定最有效的方法是知道每个主列表可能有很多“人”和很多“项目”。
同样,这实际上是为了显示使用基金会计的公司的合并 Assets 负债表。因此,“人”实际上是基金,“杂货项目”实际上是每个基金内的账户。并非每个基金都拥有与其他基金相同的账户。
编辑
为了清楚起见,我是这样建模的:
model Person
field: persons_name
model ItemType:
field: i_types #Things like "Fruit", "Veggies", "Canned Goods", etc.
model Item
field: item_name
FK: ItemType
model Selection
FK: Person
FK: Item
field: qty
编辑 2 为我的模型添加了更多字段
最佳答案
除了在模板中展示之外,您应该避免做任何其他事情。我的建议是在 View 中构建一些方便的数据结构,然后在模板中迭代它们:
- “人员”的
列表
(用于创建表头) - 项目的
字典
,其中项目是键(您可以使用项目的字符串表示来简化事情),值是项目的有序列表,其顺序与上一点的列表是有序的;您也可以将总数附加到此列表中。
这使得使用模板中的东西更容易,你会有这样的东西:
<table>
<thead>
<tr>
<td>Item name</td>
{% for person in person_list %}
<td>{{ person.name }}</td>
{% endfor %}
<td>Total</td>
</tr>
</thead>
<tbody>
{% for item, item_list in item_dict.items %}
<tr>
<td>{{ item }}</td>
{% for i in item_list %}
<td>{{ i }}</td>
{% endfor %}
</tr>
{% endfor %}
<tbody>
</table>
为了整合您的类别,dictionary
结构可以进一步嵌套在包含数据(上面的字典)和总计列表的类别dictionary
中。
我建议的底线是,您应该在 View 中构建所有结构,以便在模板中轻松显示它们,而不是相反
关于python - Django - 如何显示数据矩阵,在每一行和每一列的末尾都有总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34483927/