Django get字段值的属性(外键)

Django get字段值的属性(外键),django,django-models,django-templates,Django,Django Models,Django Templates,我需要从外键(选项)中为模型对象(夹克)中的每个字段获取属性(代码) 很明显,我错了。它只返回字段值的Id。我需要字段值的属性“code” 模板: {% for field, value in jacket.get_fields %} <tr> <td> {{field}} </td> <td> {{value}} </td> </tr> {% endfor %} 您的方法是正确的,但是您

我需要从外键(选项)中为模型对象(夹克)中的每个字段获取属性(代码)

很明显,我错了。它只返回字段值的Id。我需要字段值的属性“code”

模板:

{% for field, value in jacket.get_fields %}

<tr>
  <td>
    {{field}}
  </td>
  <td>
    {{value}}
  </td>
</tr>
{% endfor %}

您的方法是正确的,但是您需要在您的实例上使用

请参见此示例:

>>> my_instance = MyModel.objects.first()
>>> field_names = [field.name for field in MyModel._meta.fields]
>>> print(field_names)
['id', 'title', 'created_by', 'created_on']
>>> for field_name in field_names:
...     print('{field}: {value}'.format(field=field_name, value=getattr(my_instance, field_name)))
...
id: 1
title: My instance
created_by: user
created_on: 2018-06-08 06:58:26.927950
通过使用
getattr
,您可以从属性名中检索值,它只是一个Python函数,可以在任何对象中工作

在您的情况下,您应该使用
self
上的
getattr
,因为您正在模板上使用夹克实例。您可能会遇到关系问题,假设您的
夹克
模型中有一个
ManyToManyField
,则
getattr
将返回一个
RelatedManager
对象。但是您可以在
get\u字段
方法中处理这个问题

>>> my_instance = MyModel.objects.first()
>>> field_names = [field.name for field in MyModel._meta.fields]
>>> print(field_names)
['id', 'title', 'created_by', 'created_on']
>>> for field_name in field_names:
...     print('{field}: {value}'.format(field=field_name, value=getattr(my_instance, field_name)))
...
id: 1
title: My instance
created_by: user
created_on: 2018-06-08 06:58:26.927950