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