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.
Wyzwanie
ŁatwyW pliku books/admin.py przypisz Book klasę BookAdmin zamiast rejestrować go bez dodatkowej konfiguracji. Lista książek powinna zawierać:
- kolumny
title,author,year,genreiis_read - pole wyszukiwania, które znajduje książki według tytułu lub nazwiska autora
- panel boczny, który filtruje według
genreiis_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)
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