如何在模板中动态引用 Django 查询集对象中的字段?
How can I dynamically reference the fields in a Django query set object in a template?
我有一个由通用 ListView 引用的模型,并提供给模板。尝试在模板中创建一个 table 给我一个 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 %}
但这失败并出现上述错误。
@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 模板中的数据库记录。
我有一个由通用 ListView 引用的模型,并提供给模板。尝试在模板中创建一个 table 给我一个 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 %}
但这失败并出现上述错误。
@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 模板中的数据库记录。