【问题标题】:How can I dynamically reference the fields in a Django query set object in a template?如何在模板中动态引用 Django 查询集对象中的字段?
【发布时间】:2021-09-19 12:22:50
【问题描述】:

我有一个由通用 ListView 引用的模型,并提供给模板。尝试在模板中创建表格给我一个TypeError: not iterable - 我做错了什么?

示例代码

Class bookmodel(models.Model):
     Book = models.CharField(max_length=255)
     Author = models.CharField(max_length=255)

观看次数

Class bookview(generic.ListView):
     model = bookmodel
     template = “books.html”

生成object_list 类似:

<Queryset [<bookmodel: Grapes of Wrath >, <bookmodel: I, Robot>]>

模板布局如下:

{% extends ‘base.html’ %}
{% block content %}
<table>
    <thead>
         <tr>
               <th> book </th>
               <th> author </th>
         </tr>
    </thead>
    <tbody>
         {% for object in object_list %}
         <tr>
                {% for field in object %}
                <td> {{ field }} </td>
                {% endfor %}
         </tr>
         {% endfor %}
     </tbody>
</table>
{% endblock %}

但这会因上述错误而失败。

【问题讨论】:

标签: django django-templates django-queryset


【解决方案1】:

@Karioki 在他的评论中提出的链接问题提出了以下代码:

def attrs(self):
    for field in self._meta.fields:
        yield field.name, getattr(self, field.name)

无论是从视图还是模板标签,yield 函数在我的模板中都莫名其妙地不起作用:

下面的衍生代码做了:

def get_values(self):
        value_set = [getattr(self, field.name) for field in self._meta.fields]
        return value_set

虽然这对我来说仍然很笨拙,但我将其标记为稻草人答案,但我希望会有另一个答案提供一种更有效的方法来调查 Django 模板中的数据库记录。

【讨论】:

    猜你喜欢
    • 2016-12-18
    • 1970-01-01
    • 2012-12-28
    • 2023-03-07
    • 2018-08-11
    • 2011-03-25
    • 2011-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多