Menu
CoddyTech

Personalizando a área de administração

Parte da seção Models e o Admin do Journey de Django da Coddy. Lição 21 de 23.

A lista de livros do admin tem uma coluna, o __str__ de cada livro, e nenhuma maneira de encontrar nada. Uma classe ModelAdmin, registrada com o decorador, muda isso. Para um Loan com uma 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 escolhe as colunas; uma coluna ForeignKey mostra o __str__ da linha relacionada, e um campo many-to-many não pode ser uma coluna. search_fields adiciona uma caixa de pesquisa. Para pesquisar por meio de uma ForeignKey, indique um campo do outro modelo após dois sublinhados, book__title: book sozinho é um link, não texto, e faz a pesquisa falhar. list_filter adiciona uma barra lateral de filtros.

O decorador faz o mesmo que admin.site.register(Loan, LoanAdmin). Registre cada modelo uma única vez: uma segunda tentativa interrompe o site com AlreadyRegistered.

challenge icon

Desafio

Fácil

Em books/admin.py, atribua um BookAdmin a Book em vez de registrá-lo da forma simples. A lista de livros deve ter:

  • colunas para title, author, year, genre e is_read
  • uma caixa de pesquisa que encontre livros pelo título ou pelo nome do autor
  • uma barra lateral que filtre por genre e is_read

Clique em Run, faça login novamente e pesquise por herbert.

Experimente você mesmo

from django.contrib import admin

from .models import Author, Book, Tag

admin.site.register(Book)
admin.site.register(Author)
admin.site.register(Tag)
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Models e o Admin

Pratique por conta própria: Playground de Django