django 如何遍历由通用详细 View 传回的上下文对象?

标签 django django-templates django-generic-views

我正在使用通用 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/

相关文章:

django - 通过 django-widget-tweaks 使用字段标签作为占位符

django - 在 Django 中使用嵌入式 Iframe?

python - NoReverseMatch at/polls/〉为什么第0行会出错?

python - Django 在通用 View 中抛出 404

python - Django 更新 View : define fields dynamically via function instead of a member variable

django - 在模板中呈现标记 'sass_src' 时无法定位文件

python - django 中间件导致的重定向循环

python - 窗体 View : View didn't return an HttpResponse object

python - Django 应用程序的照片管理

python - 我如何在 django 查询中找到下一个最高值