4

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

ETC...

有没有办法做这样的事情?

    <table>
        {% for field in project %}
            <tr>
                <td>{{ field }}</td>
            </tr>
        {% endfor %}
    </table>

我尝试了上面的代码片段并得到了这个错误:

Caught TypeError while rendering: 'Project' object is not iterable
4

1 回答 1

3

通常最好放置每个字段,但是您只想转储所有可以执行以下操作的字段:

# 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>
于 2011-07-14T12:27:32.960 回答