如何在具有自己的列的更改列表页面中显示是/否图标

Sou*_*Yan 1 django django-admin

我正在为一个模型编写一个管理员。有一个名为 的列modbus_address_mapping_valid,它不是该模型的成员。只有两个结果。它如何在页面中显示是/否图标

def modbus_address_mapping_valid(self,obj):
    try:
        mapping_valid = models.ModbusAddressMapping.objects.filter(object_id=obj.id)[0].valid
    except Exception:
        mapping_valid = False
    if mapping_valid:
        return u'<img src="/static/admin/img/icon-no.gif" alt="False">'
    else:
        return u'<img src="/static/admin/img/icon-no.gif" alt="False">'
modbus_address_mapping_valid.short_description = 'Modbus_mapping_validate_flag'
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

okm*_*okm 5

检查文档,正如它所说

\n\n
\n

如果给定的字符串是模型的方法,ModelAdmin 或返回 True 或 False 的可调用\n Django 将显示漂亮的 \xe2\x80\x9con\xe2\x80\x9d 或 \xe2\x80\x9coff\xe2\x80 \x9d\n 图标(如果为该方法提供值为 True 的布尔属性)。

\n
\n\n

所以你要

\n\n
def modbus_address_mapping_valid(self,obj):\n    try:\n        return models.ModbusAddressMapping.objects.filter(object_id=obj.id)[0].valid\n    except Exception:\n        return False\nmodbus_address_mapping_valid.short_description = \'Modbus_mapping_validate_flag\'\nmodbus_address_mapping_valid.boolean = True\n
Run Code Online (Sandbox Code Playgroud)\n\n

通常,如果您想呈现某些 HTML 片段,例如当前代码中的片段,您需要allow_tags(在同一个文档中找到它,位于有关描述的正上方boolean

\n