有没有办法自定义字段在django管理结果列表中的显示方式? 例如,我想基于字段值显示图像,就像使用图像而不是文本值显示布尔字段一样。
答案 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中(不可否认,这可能不是这个特定属性的一个巨大用例,但是在其他情况下肯定会派上用场。)