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 __str__ di ogni libro, e non offre alcun modo per trovare qualcosa. Una classe ModelAdmin, registrata con il decoratore, permette di modificarlo. Per un Loan con una 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 seleziona le colonne; una colonna ForeignKey mostra il __str__ della riga correlata e un campo molti-a-molti non può essere una colonna. search_fields aggiunge una casella di ricerca. Per cercare attraverso una ForeignKey, indica un campo dell’altro modello dopo due trattini bassi, book__title: book da solo è un collegamento, non testo, e causa 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 per titolo o per nome dell’autore
  • una barra laterale che filtri per genre e is_read

Premi Run, accedi di nuovo e cerca herbert.

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