Menu
CoddyTech

Personalizzare l'amministrazione

Fa parte della sezione Modelli e pannello di amministrazione del percorso Django di Coddy. Lezione 21 di 23.

L’elenco dei libri nell’area di amministrazione ha una sola colonna, il valore di __str__ di ciascun libro, e nessun modo per trovare qualcosa. Una classe ModelAdmin, registrata con il decoratore, modifica questo comportamento. Per un Loan con una chiave esterna 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 seleziona le colonne; una colonna con chiave esterna mostra il valore di __str__ della riga correlata, mentre un campo molti-a-molti non può essere una colonna. search_fields aggiunge una casella di ricerca. Per cercare tramite una chiave esterna, indica un campo dell’altro modello dopo due trattini bassi, book__title: book da solo è un collegamento, non testo, e provoca un errore nella ricerca. list_filter aggiunge una barra laterale con i filtri.

Il decoratore fa la stessa cosa di admin.site.register(Loan, LoanAdmin). Registra ogni modello una sola volta: una seconda registrazione blocca il sito con AlreadyRegistered.

challenge icon

Sfida

Facile

In books/admin.py, assegna a Book un BookAdmin al posto della registrazione semplice. L’elenco dei libri dovrebbe avere:

  • colonne per title, author, year, genre e is_read
  • una casella di ricerca che trovi i libri in base al titolo o al nome dell’autore
  • una barra laterale che filtri per genre e is_read

Esegui di nuovo createsuperuser, accedi e cerca «herbert» tra i libri: Children of Dune e Dune.

Provalo tu

from django.contrib import admin

from .models import Author, Book, Tag

admin.site.register(Book)
admin.site.register(Author)
admin.site.register(Tag)
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Modelli e pannello di amministrazione

Esercitati da solo: Playground Django