Personalizar el sitio de administración
Parte de la sección Modelos y el panel de administración del Journey de Django de Coddy. Lección 21 de 23.
La lista de libros del administrador tiene una columna, el __str__ de cada libro, y ninguna forma de encontrar nada. Una clase ModelAdmin, registrada con el decorador, permite cambiar eso. Para 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 elige las columnas; una columna ForeignKey muestra el __str__ de la fila relacionada, y un campo de muchos a muchos no puede ser una columna. search_fields añade un cuadro de búsqueda. Para buscar mediante una ForeignKey, indica un campo del otro modelo después de dos guiones bajos, book__title: book por sí solo es un enlace, no texto, y hace que la búsqueda falle. list_filter añade una barra lateral de filtros.
El decorador hace lo mismo que admin.site.register(Loan, LoanAdmin). Registra cada modelo una sola vez: una segunda vez detiene el sitio con AlreadyRegistered.
Desafío
FácilEn books/admin.py, asigna a Book un BookAdmin en lugar de registrarlo sin personalizar. La lista de libros debe tener:
- columnas para
title,author,year,genreeis_read - un cuadro de búsqueda que encuentre libros por título o por el nombre del autor
- una barra lateral que filtre por
genreeis_read
Haz clic en Ejecutar, vuelve a iniciar sesión y busca herbert.
Pruébalo tú mismo
from django.contrib import admin
from .models import Author, Book, Tag
admin.site.register(Book)
admin.site.register(Author)
admin.site.register(Tag)
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Modelos y el panel de administración
3Páginas desde la base de datos
Una lista desde la base de datosUna página para cada libroPractica por tu cuenta: Playground de Django