Menu
CoddyTech

Dostosowywanie panelu administracyjnego

Część sekcji Modele i panel administracyjny ścieżki Django w Coddy. Lekcja 21 z 23.

Lista książek w panelu administracyjnym ma jedną kolumnę — __str__ każdej książki — i nie umożliwia wyszukiwania. Klasa ModelAdmin, zarejestrowana za pomocą dekoratora, zmienia tę sytuację. Dla Loan z kluczem obcym 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 wybiera kolumny; kolumna z kluczem obcym wyświetla __str__ powiązanego wiersza, a pole wiele-do-wielu nie może być kolumną. search_fields dodaje pole wyszukiwania. Aby wyszukiwać w polu klucza obcego, podaj nazwę pola innego modelu po dwóch znakach podkreślenia, book__title: samo book jest odnośnikiem, a nie tekstem, i powoduje błąd wyszukiwania. list_filter dodaje pasek boczny z filtrami.

Dekorator działa tak samo jak admin.site.register(Loan, LoanAdmin). Zarejestruj każdy model tylko raz: ponowna rejestracja zatrzymuje działanie witryny z błędem AlreadyRegistered.

challenge icon

Wyzwanie

Łatwy

W pliku books/admin.py przypisz Book klasę BookAdmin zamiast rejestrować go w zwykły sposób. Lista książek powinna zawierać:

  • kolumny title, author, year, genre i is_read
  • pole wyszukiwania, które znajduje książki na podstawie tytułu lub nazwiska autora
  • panel boczny, który filtruje według genre i is_read

Ponownie uruchom createsuperuser, zaloguj się i wyszukaj wśród książek herbert: Children of Dune i Dune.

Spróbuj swoich sił

from django.contrib import admin

from .models import Author, Book, Tag

admin.site.register(Book)
admin.site.register(Author)
admin.site.register(Tag)
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Modele i panel administracyjny

Poćwicz samodzielnie: Edytor online Django