2010-03-14 11 views
24

Ich habe ein Modell definiert, das eine Verknüpfung ein Bild enthält. Gibt es eine Möglichkeit, das Bild in der Modellliste anzuzeigen? Mein Modell sieht wie folgt aus:Django: Bild in Admin-Schnittstelle anzeigen

class Article(models.Model): 
    url = models.CharField(max_length = 200, unique = True) 
    title = models.CharField(max_length = 500) 
    img = models.CharField(max_length = 100) # Contains path to image 

    def __unicode__(self): 
     return u"%s" %title 

Gibt es eine Möglichkeit, das Bild zusammen mit Titel angezeigt werden?

Antwort

57

Sie können eine Modellinstanzmethode mit einem anderen Namen erstellen, HTML-Tags für die Ausgabe zulassen und diese Methode als Listenfeld hinzufügen. Hier ein Beispiel:

Zuerst fügen Sie eine neue Methode, um den HTML-Code für das Bild, Aufnahme Rückkehr:

class Article(models.Model): 
    ... 
    def admin_image(self): 
     return '<img src="%s"/>' % self.img 
    admin_image.allow_tags = True 

Dann fügen Sie diese Methode zur Liste:

class ArticleAdmin(admin.ModelAdmin):  
    ... 
    list_display = ('url', 'title', 'admin_image') 
+0

Ich habe ein Problem. Könnten Sie einen Blick nehmen pls Typeerror an/admin/ 'MediaDefiningClass' Objekt ist nicht iterable anfordern Methode: \t GET Anforderungs-URL: \t http://127.0.0.1:8000/admin/ Ausnahmetyp: \t Typeerror Exception Wert: \t ‚MediaDefiningClass‘ Objekt ist nicht Iterable –

+1

Eigentlich die vorherige Fest, jetzt haben diese: ‚admin_img‘ ist kein aufrufbar oder ein Attribut .... –

+0

ok, ignorieren Sie bitte .. war ein Tippfehler –

11
def image_tag(self, obj): 
    return u'<img src="%s" />' % obj.image 

image_tag.short_description = 'Image' 
image_tag.allow_tags = True 

und in Ihrem admin.py add:

readonly_fields = ('image_tag',) 
3

Sie das Bild auch direkt im Admin hinzufügen

class ArticleAdmin(admin.ModelAdmin): 

    def admin_image(self, obj):      
     return '<img src="%s"/>' % obj.img 
    admin_image.allow_tags = True 

    list_display = ('url', 'title', 'admin_image') 
+0

Bessere Lösung für die Architektur. – SolessChong