Menu
CoddyTech

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 nur eine Spalte, den Wert von __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 Wert von __str__ des zugehörigen Datensatzes an, und ein Viele-zu-viele-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 führt bei der Suche zu einem Absturz. 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.

challenge icon

Aufgabe

Einfach

Gib Book in books/admin.py statt der einfachen Registrierung eine BookAdmin. Die Bücherliste sollte Folgendes enthalten:

  • Spalten für title, author, year, genre und is_read
  • ein Suchfeld, das Bücher nach Titel oder nach dem Namen des Autors findet
  • eine Seitenleiste, die nach genre und is_read filtert

Führe createsuperuser erneut aus, melde dich an und suche in „Bücher“ nach herbert: Children of Dune und Dune.

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)
quiz iconTeste dich selbst

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