gpt4 book ai didi

python - Django/Python - 将数据收集到正确的形式(算法)

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:11:21 26 4
gpt4 key购买 nike

我有这样的模型:

Item:
name
desc

AttrGroup:
name
order

AttrName:
name
group.ForeinKey(AttrGroup)
order

AttrVal:
value
attr.ForeinKey(AttrName)
item.ForeinKey(Item)

所以我想比较列表items_id=[1,3,7,...]中n项的属性

在 View 中,我做了这样的事情:

attrs = AttrVal.object.filter(item__id__in=items_id)

并发送到模板。但是我会对如何安排界面列表的方式感到困惑。

模板应该是这样的:

<table>
{% for g in group %}
<tr class="group_name">{{ g.name }}</tr>
{% for a in attrs %}
<tr>
<td>{{ a.name }}</td>
{% for i in items_id %}
<td>{{ value of item 'i' }}</td>
{ %endfor %}
</tr>
{% endfor %}
{% endfor %}
</table>

我认为它会很好的解决这个问题。谢谢!

更新:按照@Lott 的漂亮解决方案,我找到了如何将数据显示到模板的方法。我正在使用这样的代码:

{% for g in groups %}
<tr class="title_row">
<td class="group_name" colspan="{{ no_items }}">{{ g.0 }}</td>
</tr>

{% for a in g.1 %}
<tr>
<td>{{ a.attr.name }}</td>
{% for i in comparing_items %}
<td>{% if a.item.id == i %}{{ a.value }}{% endif %}</td>
{% endfor %}
</tr>
{% endfor %}
{% endfor %}

它出现了:

<table>
<tr>
<td>Attr Name 1</td>
<td>Attr Value of Item 1</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Attr Name 2</td>
<td>Attr Value of Item 1</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Attr Name 1</td>
<td></td>
<td></td>
<td></td>
<td>Attr Value of Item 4</td>
</tr>
</table>

我的目标是在同一行中列出项目 [1,2,3,...] 的相同属性。 HTML 应该是这样的:

<table>
<tr>
<td>Attr Name 1</td>
<td>Attr Value of Item 1</td>
<td>Attr Value of Item 2</td>
<td>Attr Value of Item 3</td>
<td>Attr Value of Item n</td>
</tr>
<tr>
<td>Attr Name 2</td>
<td>Attr Value of Item 1</td>
<td>Attr Value of Item 2</td>
<td>Attr Value of Item 3</td>
<td>Attr Value of Item n</td>
</tr>
<tr>
<td>Attr Name m</td>
<td>Attr Value of Item 1</td>
<td>Attr Value of Item 2</td>
<td>Attr Value of Item 3</td>
<td>Attr Value of Item n</td>
</tr>
</table>

非常感谢!

最佳答案

在您的 View 函数中,您可以找到 attrs 查询集中每个 AttrValue 的 AttrName 和 AttrGroup。您在 View 函数中创建相关 组。然后在模板中显示详细信息。

groups = defaultdict( list )
for a in attrs:
groups[a.attr.group.order, a.attr.group.name].append( a )

group_list = [ (name[1], groups[name]) for name in sorted( groups.keys() ) ]

您的模板将如下所示

<table>
{% for g in group_list %}
<tr class="group_name">{{ g.0 }}</tr>
{% for a in g.1 %}
<tr>
<td>{{ a.name }}</td>
{% for i in a.item %} <!-- Yes, you can refer to methods of model objects. -->
<td>{{ i }}</td>
{ %endfor %}
</tr>
{% endfor %}
{% endfor %}
</table>

关于python - Django/Python - 将数据收集到正确的形式(算法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5832143/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com