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 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.

challenge icon

Défi

Facile

Dans 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, genre et is_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 genre et is_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)
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