Menu
CoddyTech

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.

challenge icon

Défi

Facile

Dans 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, genre et is_read
  • un champ de recherche qui trouve les livres par titre ou par nom d’auteur
  • une barre latérale qui filtre par genre et is_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)
quiz iconTestez-vous

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

Entraînez-vous par vous-même : Playground Django