django如何循环通过通用的细节视图传回的上下文对象? [英] django how to loop through the context object passed back by a generic detailview?

查看:168
本文介绍了django如何循环通过通用的细节视图传回的上下文对象?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用通用的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 project in project%}
< tr>
< td> {{field}}< / td>
< / tr>
{%endfor%}
< / table>

我尝试了上述代码段,并收到此错误:

 在渲染时捕获TypeError:'Project'对象不可迭代


解决方案

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



pre $ #models.py
class Project(models.Model):
...

def get_field_values(self)
return [field.value_to_string(self)for Project._meta.fields]

那么你可以做

 < table> 
{%for project.get_field_values%}
< tr>
< td> {{value}}< / td>
< / tr>
{%endfor%}
< / table>


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>

这篇关于django如何循环通过通用的细节视图传回的上下文对象?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆