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.
Sfida
FacileIn books/admin.py, assegna a Book un BookAdmin al posto della registrazione semplice. L’elenco dei libri dovrebbe avere:
- colonne per
title,author,year,genreeis_read - una casella di ricerca che trovi i libri per titolo o per nome dell’autore
- una barra laterale che filtri per
genreeis_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)
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