在django中更改list_display

时间:2014-10-13 11:22:41

标签: python django

在我的模型中,我有一个网址字段:

url = models.URLField(...)  #  This is a url for an image

在django admin中,它显示为文本。我想要做的是显示图像本身(如缩略图)。

所以我想编辑list_display使用的任何模板,并将该url放入

<img src="..."> 

标签

我找不到合适的模板进行编辑。

如何做到这一点?

2 个答案:

答案 0 :(得分:1)

无需更改任何模板,例如

class FooAdmin(admin.ModelAdmin):
    list_display = ('get_url',)

    def get_url(self, obj):
        return "<img src='{url}' />".format(url=obj.url)
    get_url.allow_tags = True

答案 1 :(得分:0)

以下是没有模板修改的快速解决方案

  

models.py个文件

class Test(models.Model):
    title = models.CharField(max_length=200)
    .
    .
    .
    .
    logo = ProcessedImageField(upload_to='images/rental/',
                                           processors=[ResizeToFill(291, 167)],
                                           format='JPEG',
                                           options={'quality': 60}, blank=True, null=True)
    .
    .
    .
    .

    STATUS = (
                   ('active','Active'),
                   ('inactive','Inactive'),
                   ('hidden','Hidden'),
                   )
    status = models.CharField(max_length=10, choices=STATUS, default='active')
    def logo_image(self):
        return '<img src="/media/%s" height="50px" width="50px"/>' % self.logo
    logo_image.allow_tags = True    

    class Meta:
         verbose_name = 'blah'
         verbose_name_plural = 'blahsh blah'
  

admin.py档案

class TestAdmin(admin.ModelAdmin):
    list_display = ( 'title', 'email', 'address', 'www', 'logo_image', 'status')
    list_filter = ('status',)
    list_display_links = ('logo_image','title',)#to show link on a image
    list_editable = ('status',)    

注意:您可以使用自己的数据库列代替徽标列。您还需要对def logo_image(self):方法

进行一些更改