在模板中迭代模型实例字段名称和值

问题:

我正在尝试创建一个基本模板来显示所选实例的字段值,以及它们的名称。将其视为表格格式的该实例的值的标准输出,第一列中的字段名称(详细名称(如果在字段中指定))以及第二列中该字段的值。
例如,假设我们有以下模型定义:

class Client(Model):
    name = CharField(max_length=150)
    email = EmailField(max_length=100, verbose_name="E-mail")

我想要它在模板中输出,如下所示(假设具有给定值的实例):

Field Name      Field Value
----------      -----------
Name            Wayne Koorts
E-mail          waynes@email.com

我想要实现的是能够将模型的一个实例传递给一个模板,并能够在模板中动态地迭代,如下所示:

<table>
    {% for field in fields %}
        <tr>
            <td>{{ field.name }}</td>
            <td>{{ field.value }}</td>
        </tr>
    {% endfor %}
</table>

有没有一个整洁的“Django认可”的方式来做到这一点?这似乎是一个很常见的任务,我需要经常为这个特定的项目做。

回答:

 model._meta.get_all_field_names()将为您提供所有模型的字段名称,然后可以使用model._meta.get_field()来完成详细名称,getattr(model_instance, 'field_name')从模型中获取值。
注意:在django 1.9中不推荐使用model._meta.get_all_field_names()。而是使用model._meta.get_fields()获取模型的字段,field.name获取每个字段的名称。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Iterate over model instance field names and values in template

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

8 + 1 =