Sur le site de gestion de Django, il y avait un cas où "si l'image peut être affichée sur l'écran de liste, l'efficacité du travail serait bonne", mais quand je l'ai vérifié, c'était très facile, donc je l'enregistrerai sous forme de conseils.
Je suis un peu désolé que Qiita n'ait que quelques informations simples, mais même si vous faites une recherche Google pour Django, elle est souvent remplie de Stack Overflow et il y a peu d'informations qui arrivent en japonais, donc c'est utile pour quelqu'un. Je pense qu'il peut être affiché.
Pour cet article, nous avons confirmé l'opération avec Django 1.8.
Je vais l'écrire comme une suite de mon livre Comment utiliser ManyToManyField avec Admin (site administratif) de Django.
Définissez une méthode (ʻadmin_og_image) avec un nom arbitraire qui renvoie le chemin du fichier de l'image dans models.py comme indiqué ci-dessous, et définissez ʻallow_tags = True
.
models.py
@@ -11,9 +11,18 @@ class Article(models.Model):
title = models.CharField(max_length=100)
author = models.ForeignKey(Author, blank=True, null=True)
meta = models.ManyToManyField('Tag')
-
+ og_image = models.ImageField(default='')
+
def __unicode__(self):
return self.title
+
+ def admin_og_image(self):
+ if self.og_image:
+ return '<img src="{}" style="width:100px;height:auto;">'.format(self.og_image)
+ else:
+ return 'no image'
+
+ admin_og_image.allow_tags = True
Ajoutez ensuite le nom de la méthode correspondante à list_display
dans admin.py et vous avez terminé.
admin.py
@@ -3,7 +3,7 @@ from django.contrib import admin
from .models import Author, Article, Tag
class ArticleAdmin(admin.ModelAdmin):
- list_display = ('title', 'author', '_meta')
+ list_display = ('title', 'author', '_meta', 'admin_og_image')
De plus, il est également possible de l'écrire complètement avec uniquement admin.py, auquel cas c'est OK si vous écrivez comme suit.
models.py
@@ -11,9 +11,18 @@ class Article(models.Model):
title = models.CharField(max_length=100)
author = models.ForeignKey(Author, blank=True, null=True)
meta = models.ManyToManyField('Tag')
-
+ og_image = models.ImageField(default='')
+
admin.py
@@ -3,11 +3,19 @@ from django.contrib import admin
from .models import Author, Article, Tag
class ArticleAdmin(admin.ModelAdmin):
- list_display = ('title', 'author', '_meta')
+ list_display = ('title', 'author', '_meta', 'admin_og_image')
def _meta(self, row):
return ','.join([x.name for x in row.meta.all()])
+ def admin_og_image(self, row):
+ if row.og_image:
+ return '<img src="{}" style="width:100px;height:auto;">'.format(row.og_image)
+ else:
+ return 'no image'
+
+ admin_og_image.allow_tags = True
+
Recommended Posts