首页 > 解决方案 > 模板中的字段名称和值

问题描述

我想在我的模板中显示这样的内容:

姓名:约翰

年龄:18

城市: 纽约

例如,使用以下代码:

视图.py

def person_details(request,pk):
   person = get_object_or_404(Person, id=pk)
   return render(request, 'template.html', {'person': person, 'person_fields': person._meta.get_fields()})

模板.html

{% for field in person_fields %}        
     <div class="col-4 form-group">            
         <p><strong>{{ field.verbose_name }}:</strong> {{ person[ field.name ]  }}</p>             
     </div>
{% endfor %}

这在python中可能吗?我问是因为我有一个包含大约 20 个字段的模型,并且在模板中对字段进行硬编码会有点困难。

标签: pythondjangodjango-templates

解决方案


您可以使用 Django 的to-python 查询集序列化程序。

只需将以下代码放在您的视图中:

from django.core import serializers
data = serializers.serialize( "python", SomeModel.objects.all() )

然后在模板中:

{% for instance in data %}
    {% for field, value in instance.fields.items %}
        {{ field }}: {{ value }}
    {% endfor %}
{% endfor %}

它的最大优点是它可以处理关系字段。

对于字段的子集,请尝试:

data = serializers.serialize('python', SomeModel.objects.all(), fields=('name','size'))

推荐阅读