Django, как перебрать объект контекста, переданный обратно через общий подробный вид? - PullRequest
2 голосов
/ 14 июля 2011

Я использую общий 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

1 Ответ

1 голос
/ 14 июля 2011

Обычно лучше всего размещать каждое поле, но если вы просто хотите сбросить все поля, вы могли бы сделать что-то вроде:

# 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>
...