2015-11-21 93 views
0

一種新手問題,但是如何顯示圖像的縮略圖而不是默認Django管理員中的圖像路徑?繼承人是我到目前爲止有:在Django Admin中顯示圖像縮略圖而不是圖像路徑

Models.py

from django.db import models 


class Project(models.Model): 
    name = models.CharField(max_length=200) 
    description = models.CharField(max_length=500) 
    thumbnail = models.ImageField(upload_to="media") 

    def __str__(self): 
     return self.name 

class Image(models.Model): 
    project = models.ForeignKey(Project) 
    title = models.CharField(max_length=200) 
    image = models.ImageField(upload_to="media") 
    pub_date = models.DateTimeField('date published') 

    def admin_thumbnail(self): 
     return u'<img src="%s" />' % (self.image.url) 
    admin_thumbnail.short_description = 'Thumbnail' 
    admin_thumbnail.allow_tags = True 

Admin.py

from .models import Project, Image 

class ImageInline(admin.TabularInline): 
    model = Image 
    extra = 0 

class ImageAdmin(admin.ModelAdmin): 
    fieldsets = [ 
     (None,    {'fields': ['project']}), 
     (None,    {'fields': ['title']}), 
     (None,    {'fields': ['image']}), 
     ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}), 
    ] 

class ProjectAdmin(admin.ModelAdmin): 
    fieldsets = [ 
     (None,    {'fields': ['name']}), 
     (None,    {'fields': ['thumbnail']}), 
    ] 
    inlines = [ImageInline] 
    search_fields = ["name"] 


admin.site.register(Project, ProjectAdmin) 
admin.site.register(Image, ImageAdmin) 

我不知道是否有這樣做與否的一個更簡單的方法,但無論答案將起作用。謝謝!

回答

1

您可以使用這種方法,在你的模型具有圖像添加這個方法:

def image_tag(self): 
    if self.thumbnail: 
     return u'<img src="%s" style="width: 150px;" />' % self.thumbnail.url 
    else: 
     return 'No Image Found' 

然後調用它在admin.py這樣的:

list_display = ('image_tag', ...) 

關於到OOP,您可以創建一個父模型並擴展其他具有父圖像的模型,然後在父類上定義此方法

相關問題