有没有办法自定义字段在结果列表中的显示方式?

时间:2009-10-24 05:15:59

标签: django django-admin

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

2 个答案:

答案 0 :(得分:1)

在管理类中定义一个返回所需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

答案 1 :(得分:0)

除了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中(不可否认,这可能不是这个特定属性的一个巨大用例,但是在其他情况下肯定会派上用场。)