在 Django 模板中显示列名而不提前知道它们
Posted
技术标签:
【中文标题】在 Django 模板中显示列名而不提前知道它们【英文标题】:Display column names in Django template without knowing them ahead of time 【发布时间】:2019-07-29 11:32:21 【问题描述】:我有一个要传递给 Django 的查询集。有100列左右。我想在不知道所有列名的情况下将此单个对象呈现为 html 列表。我知道我可以使用ListView,但我想要更多的控制来在 TemplateView 中做这样的事情(带有额外的图表):
<ul>
% for obj in queryset %
<li>
% for column in obj %
[Name of Column]: column
% endfor %
</li>
% endfor %
</ul>
所以我想在事先不知道列名的情况下同时呈现列名和列数据。平常我会这样做:
<ul>
% for obj in queryset %
<li>
Column 1: obj.column1
Column 2: obj.column2
...
Column 100: obj.column100
</li>
% endfor %
</ul>
但这有点乏味,需要手动写出每个列名。
【问题讨论】:
将obj.__dict__
而不是 obj
传递给模板。
您可以向对象添加一个方法,允许您从模板中迭代每一列及其值:***.com/questions/1172722/…
你能从你的查询集中发布样本数据吗?这实现起来相当简单,但是您必须为 column names
添加一个表,该表具有当前查询的 FK。
【参考方案1】:
你可以试试这个
<ul>
% for obj in queryset %
<li>
% for column in obj.column_set.all %
[Name of Column]: column
% endfor %
</li>
% endfor %
</ul>
【讨论】:
这个工作[Name of Column]
吗?那只是显示[Name of Column]
不是吗?如果它确实有效,你有什么链接吗?以上是关于在 Django 模板中显示列名而不提前知道它们的主要内容,如果未能解决你的问题,请参考以下文章
使用 Django 模板和标签而不使用 Django 的其余部分
在 Django 模板中使用 form.as_ul 时控制表单错误显示。