Django:在模板中列出模型字段名称和值

Neo*_*Neo 7 python django django-models

可能重复:
Django - 迭代模板中的模型实例字段名称和值

嗨,

我正在尝试在模板中列出通用Django模型的字段和相应值.但是,我找不到一个针对相当常见问题的内置解决方案.我非常接近解决方案,但找不到出路.

view.py代码:

def showdetails(request, template):
    objects = newivr1_model.objects.all()
    fields = newivr1_model._meta.get_all_field_names()
    return render_to_response(template, {'fields': fields,'objects':objects},
        context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)

模板代码:

    <table>                                                                                                                                       
    {% for object in objects %}                                                 
        <tr>                                                                    
            {% for field in fields %}                                           
                <td>                                                            
            <!--    {{ object.field }} /*This line doesn't work*/ -->                                           
                </td>                                                           
            {% endfor %}                                                        
        </tr>                                                                   
    {% endfor %}                                                                
    </table>
Run Code Online (Sandbox Code Playgroud)

我应该在注释的模板行做什么,以便获得Object.field的值?

任何更好的DRY方法也是最受欢迎的.

Yuj*_*ita 5

不幸的是,你不能在模板引擎中进行类似的查找.

你必须在视图中处理它.

def showdetails(request, template):
    objects = newivr1_model.objects.all()

    for object in objects:
        object.fields = dict((field.name, field.value_to_string(object))
                                            for field in object._meta.fields)

   return render_to_response(template, { 'objects':objects },
                                    context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)

模板

{% for object in objects %}
    <tr>
    {% for field, value in object.fields.iteritems %}
        <td>{{ field }} : {{ value }}</td>
    {% endfor %}
    </tr>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)