我正在尝试创建一个基本模板以显示所选实例的字段值及其名称。可以将其视为表格式的该实例的值的标准输出,第一列具有字段名称(如果在字段上指定,则为verbose_name),第二列具有该字段的值。
例如,假设我们具有以下模型定义:
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')从模型中获取值。
model._meta.get_all_field_names()
model._meta.get_field()
getattr(model_instance, 'field_name')
注意:model._meta.get_all_field_names()在django 1.9中已弃用。而是使用model._meta.get_fields()获取模型的字段并field.name获取每个字段名称。
model._meta.get_fields()
field.name