首页 > 解决方案 > 外键的django值

问题描述

循环遍历记录列表,Django 显示每条记录的文字值。但是,如果该字段是外键怎么办?所以,这里有一个例子

{% for record in records %}
    {{ record.get_fields|dict_key:field }}
{% endfor %}

dict_key 是一个模板过滤器,它模仿给定字段的字典获取函数。

@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。比如说,该字段是房间,Django 将在第一条记录中显示“1”(房间的外键 ID),在第二条记录中显示“2”,等等。但是,我想知道如何通用和编程渲染外键的值,例如 'Kitchen' 用于 ID 1 的外键,'living room' 用于 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 辅助方法查找字段名称,并根据字段的类型,格式化我的输出。这样,我就可以重用相同的表格模板。

标签: djangodjango-templates

解决方案


推荐阅读