Django遍历记录列表,显示每个记录的文字值。但是,如果该字段是外键怎么办?所以,这是一个例子
{% for record in records %}
{{ record.get_fields|dict_key:field }}
{% endfor %}
dict_key是一个模板过滤器,模仿给定字段的字典get函数。
@register.filter(name = 'dict_key')
def dict_key(a_dict, key):
the_key = normalize(key) # lowercases the key
return the_dict.get(the_key, None)
因此,如果字段是模型中的外键,则Django将显示外键ID。举例来说,假设该字段为room,则Django将为第一条记录显示“ 1”(房间的外键ID),为第二条记录显示“ 2”,等等。但是,我想知道如何以通用方式和编程方式渲染外键的值,例如ID为1的外键为“厨房”,ID为2的外键为“客厅”,等等。
感谢您的帮助
编辑1:
这个想法是创建一个通用模板,该模板根据表中字段的类型(例如使用自定义货币过滤器的货币字段)呈现记录。为此,我必须遍历字段
{% for record in records %}
<tr>
{% for field in relevant_fields%}
<td>
{% if field in currency_fields %}
{{ record.get_fields|dict_key:field|currency }}
{% else %}
{% record.get_fields|dict_key:field}}
{% endif %}
</td>
{% endfor %}
{% endfor %}
因此,我正在使用模型的get_fields帮助方法来查找字段名称,并基于文件的类型来格式化输出。这样,我就可以重用相同的表模板。