【问题标题】:Is there a way to customize how a field looks in the results list?有没有办法自定义字段在结果列表中的外观?
【发布时间】:2009-10-24 05:15:58
【问题描述】:

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

【问题讨论】:

    标签: django django-admin


    【解决方案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
    

    【讨论】:

      【解决方案2】:

      除了 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 对象的任何地方获得,而不仅仅是在管理员中(诚然,对于这个特定属性来说,这可能不是一个巨大的用例,但是在其他情况下肯定会派上用场)。

      【讨论】:

        猜你喜欢
        • 2012-04-15
        • 2015-07-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-15
        • 1970-01-01
        相关资源
        最近更新 更多