Die Admin-Oberfläche anpassen
Teil des Abschnitts Modelle und Admin-Bereich der Django-Journey von Coddy. Lektion 21 von 23.
Die Bücherliste in der Admin-Oberfläche hat eine Spalte, den __str__ jedes Buchs, und bietet keine Möglichkeit, etwas zu finden. Eine mit dem Decorator registrierte ModelAdmin-Klasse ändert das. Für ein Loan mit einem 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 legt die Spalten fest; eine ForeignKey-Spalte zeigt den __str__ des verknüpften Datensatzes an, und ein Many-to-many-Feld kann keine Spalte sein. search_fields fügt ein Suchfeld hinzu. Um über einen ForeignKey zu suchen, gib ein Feld des anderen Modells nach zwei Unterstrichen an: book__title. book allein ist ein Link, kein Text, und lässt die Suche abstürzen. list_filter fügt eine Seitenleiste mit Filtern hinzu.
Der Decorator bewirkt dasselbe wie admin.site.register(Loan, LoanAdmin). Registriere jedes Modell nur einmal: Bei einer zweiten Registrierung wird die Website mit AlreadyRegistered angehalten.
Aufgabe
EinfachGib Book in books/admin.py an BookAdmin, anstatt es einfach zu registrieren. Die Bücherliste sollte Folgendes enthalten:
- Spalten für
title,author,year,genreundis_read - ein Suchfeld, das Bücher nach Titel oder dem Namen des Autors findet
- eine Seitenleiste, die nach
genreundis_readfiltert
Klicke auf „Run“, melde dich erneut an und suche nach herbert.
Probier es selbst
from django.contrib import admin
from .models import Author, Book, Tag
admin.site.register(Book)
admin.site.register(Author)
admin.site.register(Tag)
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Modelle und Admin-Bereich
Übe selbstständig: Django-Playground