Python Django:在模板中列出模型字段名和值
可能重复:Python Django:在模板中列出模型字段名和值,python,django,django-models,Python,Django,Django Models,可能重复: 嗨 我试图在模板中列出通用Django模型的字段和相应值。然而,对于一个相当常见的问题,我找不到一个内置的解决方案。我很接近解决方案,但找不到出路 view.py代码: def showdetails(request, template): objects = newivr1_model.objects.all() fields = newivr1_model._meta.get_all_field_names() return render_to_resp
嗨 我试图在模板中列出通用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))
模板代码:
<table>
{% for object in objects %}
<tr>
{% for field in fields %}
<td>
<!-- {{ object.field }} /*This line doesn't work*/ -->
</td>
{% endfor %}
</tr>
{% endfor %}
</table>
{对象%中的对象的%}
{字段%中的字段为%1}
{%endfor%}
{%endfor%}
我应该在注释模板行中做什么,以便获得Object.field的值
任何更好的干式方法都是最受欢迎的。您需要创建自己的过滤器,它将像python中的getattr一样工作,并在模板中使用它:
{{ object|getattribute:field }}
<table>
{% for values in object_values %}
<tr>
{% for value in values %}
<td>
{{ value }}
</td>
{% endfor %}
</tr>
{% endfor %}
</table>
以下是如何执行此操作的说明:
但我认为这不是一个好主意。相反,尝试在视图中执行此逻辑,如下所示:
object_values = []
for object in objects
object_values.append([])
for field in fields:
object_values[-1].append(getattr(object, field))
return render_to_response(template, {'object_values': object_values},
context_instance=RequestContext(request))
在模板中:
{{ object|getattribute:field }}
<table>
{% for values in object_values %}
<tr>
{% for value in values %}
<td>
{{ value }}
</td>
{% endfor %}
</tr>
{% endfor %}
</table>
{对象中的值为%_值%}
{对于值%%中的值,%}
{{value}}
{%endfor%}
{%endfor%}
Django模板系统不提供很多函数(过滤器),因为您应该在视图中执行所有逻辑。模板应该只显示数据。不幸的是,您不能在模板引擎中进行这样的查找 你必须在视图中处理这个问题
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))
模板
{%for objects%}
{%为字段,值为object.fields.iteritems%}
{{field}}:{{value}
{%endfor%}
{%endfor%}
gruszczy-我只想在模板中呈现数据:)。从理论上讲,这应该是一个相当简单和常见的问题。然后使用getattr过滤器应该可以帮助您。我相信这是一个常见的问题。不确定我是否做错了什么,我得到了一个错误“Model”对象不可编辑。