I'm using a generic DetailView to display a project object. Can I loop through the fields somehow in my template or do I have to place every field.
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'),
I've got something like this in my template:
{{ project.title }}
{{ project.created_date }}
etc...
Is there a way to do something like this?
<table>
{% for field in project %}
<tr>
<td>{{ field }}</td>
</tr>
{% endfor %}
</table>
I tried the above snippet and got this error:
Caught TypeError while rendering: 'Project' object is not iterable
Usually its best to place each field, but ff you just want to dump all the fields you would could do something like:
# models.py
class Project(models.Model):
...
def get_field_values(self):
return [field.value_to_string(self) for field in Project._meta.fields]
then you could do
<table>
{% for value in project.get_field_values %}
<tr>
<td>{{ value }}</td>
</tr>
{% endfor %}
</table>
来源:https://stackoverflow.com/questions/6693026/django-how-to-loop-through-the-context-object-passed-back-by-a-generic-detailvie