有没有办法自定义字段在django管理结果列表中的显示方式? 例如,我想基于字段值显示图像,就像使用图像而不是文本值显示布尔字段一样。

有帮助吗?

解决方案

在管理类中定义一个返回所需HTML的方法。

class MyAdmin(admin.ModelAdmin):
    list_display = ('name', 'my_image_field')

    def my_image_field(self, obj)
        return '<img src="/path/to/my/image/%s"/>' % obj.url
    my_image_field.allow_tags = True

其他提示

除了Daniel建议的方法之外,您还可以将模型上的该函数定义为属性,然后将其添加到list_display中,就像常规字段一样:

class MyModel(models.Model):
    image_field = models.ImageField(...)

    @property
    def my_image_field(self):
        return return '<img src="%s"/>' % self.image_field.url
    my_image_field.allow_tags = True

这样做的好处是my_image_field属性现在可以从你使用MyModel对象的任何地方获得,而不仅仅是在admin中(不过可能不是这个特定属性的大用例,但是在其他情况下肯定会派上用场。)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top