Personnaliser l’administration
Fait partie de la section Modèles et interface d’administration du Journey Django de Coddy. Leçon 21 sur 23.
La liste des livres dans l’interface d’administration n’a qu’une seule colonne, le __str__ de chaque livre, et aucun moyen de trouver quoi que ce soit. Une classe ModelAdmin, enregistrée avec le décorateur, permet de la modifier. Pour un Loan avec une ForeignKey book :
@admin.register(Loan)
class LoanAdmin(admin.ModelAdmin):
list_display = ["book", "friend", "lent_on", "returned"]
search_fields = ["friend", "book__title"]
list_filter = ["returned", "lent_on"]list_display sélectionne les colonnes ; une colonne ForeignKey affiche le __str__ de la ligne associée, et un champ many-to-many ne peut pas être une colonne. search_fields ajoute une barre de recherche. Pour effectuer une recherche via une ForeignKey, indique un champ de l’autre modèle après deux traits de soulignement, book__title : book seul est un lien, pas du texte, et la recherche plante. list_filter ajoute une barre latérale de filtres.
Le décorateur fait la même chose que admin.site.register(Loan, LoanAdmin). Enregistre chaque modèle une seule fois : une deuxième tentative arrête le site avec AlreadyRegistered.
Défi
FacileDans books/admin.py, attribuez à Book une classe BookAdmin à la place de son enregistrement simple. La liste des livres doit comporter :
- des colonnes pour
title,author,year,genreetis_read - une zone de recherche permettant de trouver des livres par titre ou par nom d’auteur
- une barre latérale permettant de filtrer par
genreetis_read
Cliquez sur Run, reconnectez-vous et recherchez herbert.
Essayez vous-même
from django.contrib import admin
from .models import Author, Book, Tag
admin.site.register(Book)
admin.site.register(Author)
admin.site.register(Tag)
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Modèles et interface d’administration
3Des pages issues de la base de données
Une liste issue de la base de donnéesUne page pour chaque livreEntraînez-vous par vous-même : Playground Django