gpt4 book ai didi

python - 如何将 Django 查询设置为列明智地呈现到 html 表中?

转载 作者:行者123 更新时间:2023-12-04 00:33:19 25 4
gpt4 key购买 nike

假设我的 sql 表看起来像这样..

产品表

--------------------------------
| id | Model| Manufacturer |
--------------------------------
| 1 | ABC | Samsung |
| 2 | XYZ | LG |
| 3 | ZYX | Sony |
--------------------------------

在 Django View 中,我从该表中获取所有记录并将其传递给模板..
def compare(request):
product_ids = request.GET.get('product_ids')
products = Product.objects.filter(id__in=product_ids)
return render(request, 'compare.html', {'products': products})

由于 query_set 结果记录一个接一个地出现,我们可以说它是按行进行的,但是对于模板中的这种情况,我想创建一个 html 表,结果应该是这样的..
--------------------------------------------
|id | 1 | 2 | 3 |
|Model | ABC | XYZ | ZYX |
|Manufacturer | Samsung | LG | Sony |
--------------------------------------------

通过查看上面的示例,您可以看到数据是按列呈现的。

所以请在 Django 中给我建议一个更好的方法,我可以通过它来实现这一点,如果我是 Django 的初学者,如果我错了,请纠正我。

提前致谢

最佳答案

使用 values_list() 并将您的查询集转换为列表

products = list(Product.objects.filter(id__in=product_ids).values_list('id', 'Model', 'Manufacturer'))
# OUTPUT: [(1, 'ABC', 'Samsung'), (2, 'XYZ', 'LG'), (3, 'ZYX', 'Sony')]

现在使用 zip 转置这个二维矩阵
t_products = list(zip(*products))
# OUTPUT: [(1, 2, 3), ('ABC', 'XYZ', 'ZYX'), ('Samsung', 'LG', 'Sony')]

最后你可以在你的模板中循环它
<table>
<tbody>
{% for pl in t_products %}
<tr>
{% for l in pl%}
<td>{{l}}</td>
{% endfor %}
</tr>
{% endfor %}
</tbody>
</table>

关于python - 如何将 Django 查询设置为列明智地呈现到 html 表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47492516/

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