[PYTHON] Comment afficher les images dans l'administration de Django

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.

Que veux-tu faire

イメージ図

Comment écrire

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')

Supplément

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

Comment afficher les images dans l'administration de Django
Comment collecter des images en Python
Comment utiliser ManyToManyField avec l'administrateur de Django
Comment dessiner une image OpenCV avec Pygame
Afficher les images avec Matplotlib
Comment spécifier un schéma dans les paramètres de la base de données Django
Comment afficher plusieurs images d'une galaxie en tuiles
Comment utiliser le bootstrap dans la vue de classe générique Django
Comment utiliser la clause exist dans l'ensemble de requêtes Django
Comment faire fonctionner GeoIp2 de Django
Comment télécharger des fichiers dans la vue de classe générique Django
Comment développer en Python
[Python] Comment faire PCA avec Python
Comment gérer une session dans SQLAlchemy
Comment utiliser les classes dans Theano
Comment écrire sobrement avec des pandas
Comment mettre à jour Spyder dans Anaconda
Comment refléter CSS dans Django
Comment tuer des processus en vrac
Comment utiliser Mysql avec python
Comment envelopper C en Python
Comment utiliser ChemSpider en Python
Comment utiliser PubChem avec Python
Comment exécuter du code TensorFlow 1.0 en 2.0
Comment gérer le japonais avec Python
Comment se connecter à Docker + NGINX
Comment appeler PyTorch dans Julia
Comment définir intelligemment les objets couramment utilisés dans View
Comment utiliser les colonnes calculées dans CASTable
[Introduction à Python] Comment utiliser la classe en Python?
Comment supprimer l'erreur d'affichage dans matplotlib
Comment définir dynamiquement des variables en Python
Comment faire R chartr () en Python
Comment supprimer des sessions expirées dans Django
[Itertools.permutations] Comment créer une séquence en Python
Comment utiliser Google Test en langage C
Comment implémenter un sérialiseur imbriqué avec drf-flex-fields
Comment exécuter des commandes avec Jupyter Notebook
Comment faire 'git fetch --tags' dans GitPython
Comment obtenir stacktrace en python
Comment afficher la table quatre-vingt-dix-neuf en python
Comment extraire une zone de polygone en Python
Comment réattribuer un index dans pandas dataframe
Comment vérifier la version d'opencv avec python
Comment activer SSL (TLS) dans Apache
Comment utiliser l'interpréteur d'Anaconda avec PyCharm
Comment spécifier une cible non vérifiée dans Flake8
Comment changer de version de Python dans cloud9
Comment utiliser __slots__ dans la classe Python
Comment collecter des images de visage relativement facilement
Comment remplir dynamiquement des zéros avec Python
Comment faire des événements envoyés par le serveur dans Django
Comment utiliser les expressions régulières en Python
Comment utiliser Map dans ViewPager d'Android
Comment ajouter des options au serveur de runtime manage.py de Django
Comment afficher Hello World en python
Comment lire des fichiers CSV avec Pandas
Comment changer la couleur de l'éditeur dans PyCharm