在 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,在模板中显示 ValidationError

使用 Django 模板和标签而不使用 Django 的其余部分

在 Django 模板中使用 form.as_ul 时控制表单错误显示。

如何将变量发送到由通用视图调用的模板

有没有办法可以在Django中的同一个模板中渲染多个视图?如果有最佳实践可以做到这一点?提前致谢

如何在模型 TextField 的 HTML 中使用 Django 模板变量?