Menu
CoddyTech

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.

challenge icon

Desafío

Fácil

En 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, genre e is_read
  • un cuadro de búsqueda que encuentre libros por título o por el nombre del autor
  • una barra lateral que filtre por genre e is_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)
quiz iconPonte a prueba

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

Practica por tu cuenta: Playground de Django