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 }}

等...

このようなことをする方法はありますか?

    <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 に答える