代码之家  ›  专栏  ›  技术社区  ›  Eran Kampf

是否可以自定义字段在结果列表中的外观?

  •  1
  • Eran Kampf  · 技术社区  · 15 年前

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

    2 回复  |  直到 15 年前
        1
  •  1
  •   Daniel Roseman    15 年前

    在管理类中定义一个返回所需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
    
        2
  •  0
  •   Josh Ourisman    15 年前

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

    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
    

    这样做的好处是,我的“图像”字段属性现在可以从您使用MyModel对象的任何地方获得,而不仅仅是在管理中(诚然,对于这个特定的属性可能不是一个巨大的用例,但在其他情况下绝对有用)。