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.
Wyzwanie
ŁatwyW 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,genreiis_read - pole wyszukiwania, które znajduje książki na podstawie tytułu lub nazwiska autora
- panel boczny, który filtruje według
genreiis_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)
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