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 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.

challenge icon

Aufgabe

Einfach

Gib Book in books/admin.py an BookAdmin, anstatt es einfach zu registrieren. Die Bücherliste sollte Folgendes enthalten:

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

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)
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