django外键值

时间:2018-07-29 16:48:39

标签: django django-templates

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帮助方法来查找字段名称,并基于文件的类型来格式化输出。这样,我就可以重用相同的表模板。

0 个答案:

没有答案