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 comporte 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 modifier cela. Pour un Loan avec une clé étrangère 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 choisit les colonnes ; une colonne de clé étrangère affiche le __str__ de la ligne associée, et un champ plusieurs-à-plusieurs ne peut pas être une colonne. search_fields ajoute une zone de recherche. Pour effectuer une recherche dans une clé étrangère, 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 fait échouer la recherche. 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, attribue à Book un BookAdmin au lieu de l’enregistrer simplement. La liste des livres doit comporter :
- des colonnes pour
title,author,year,genreetis_read - un champ de recherche qui trouve les livres par titre ou par nom d’auteur
- une barre latérale qui filtre par
genreetis_read
Exécute à nouveau createsuperuser, connecte-toi et recherche herbert dans la liste des livres : Children of Dune et Dune.
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