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ę z __str__ każdej książki i nie oferuje żadnego sposobu na znalezienie czegokolwiek. Klasa ModelAdmin, zarejestrowana za pomocą dekoratora, to zmienia. Dla obiektu Loan z kluczem obcym 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 wybiera kolumny; kolumna klucza obcego wyświetla __str__ powiązanego wiersza, a pole wiele-do-wielu nie może być kolumną. search_fields dodaje pole wyszukiwania. Aby wyszukiwać według pola innego modelu za pośrednictwem klucza obcego, podaj nazwę tego pola po dwóch podkreśleniach, book__title: samo book jest odnośnikiem, a nie tekstem, i powoduje awarię wyszukiwania. list_filter dodaje pasek boczny z filtrami.

Dekorator działa tak samo jak admin.site.register(Loan, LoanAdmin). Każdy model zarejestruj tylko raz: ponowna rejestracja zatrzymuje działanie witryny i powoduje błąd AlreadyRegistered.

challenge icon

Wyzwanie

Łatwy

W pliku books/admin.py przypisz Book klasę BookAdmin zamiast rejestrować go bez dodatkowej konfiguracji. Lista książek powinna zawierać:

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

Naciśnij Run, zaloguj się ponownie i wyszukaj herbert.

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