我正在使用通用 DetailView 来显示项目对象。
我可以在模板中以某种方式循环遍历字段还是必须放置每个字段。
url(r'^(?P<slug>[-\w]+)/$', DetailView.as_view(model=Project,
template_name='projects/detail_project.html',slug_field='slug',
context_object_name='project'), name='project_detail'),
我的模板中有这样的东西:
{{ project.title }}
{{ project.created_date }}
等等...
有没有办法做这样的事情?
<table>
{% for field in project %}
<tr>
<td>{{ field }}</td>
</tr>
{% endfor %}
</table>
我尝试了上面的代码片段并得到了这个错误:
Caught TypeError while rendering: 'Project' object is not iterable
最佳答案
通常最好放置每个字段,但是您只想转储所有字段,您可以执行以下操作:
# models.py
class Project(models.Model):
...
def get_field_values(self):
return [field.value_to_string(self) for field in Project._meta.fields]
那么你可以做
<table>
{% for value in project.get_field_values %}
<tr>
<td>{{ value }}</td>
</tr>
{% endfor %}
</table>
关于django 如何遍历由通用详细 View 传回的上下文对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6693026/