Yönetim Sitesini Özelleştirme
Coddy'nin Django Journey'sinin Modeller ve Yönetim Paneli bölümünün bir parçası. Ders 21 / 23.
Yönetici panelindeki kitap listesinde yalnızca kitapların __str__ değerini gösteren tek bir sütun var ve hiçbir şeyi bulmanın yolu yok. Dekoratörle kaydedilen bir ModelAdmin sınıfı bunu değiştirir. book adlı bir ForeignKey alanı olan bir Loan için:
@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 sütunları belirler; bir ForeignKey sütunu, ilişkili satırın __str__ değerini gösterir ve çoktan çoğa bir alan sütun olamaz. search_fields bir arama kutusu ekler. Bir ForeignKey alanı üzerinden arama yapmak için, diğer modeldeki bir alanın adını iki alt çizgiden sonra yazın: book__title. Yalnızca book bir bağlantıdır, metin değildir ve aramanın çökmesine neden olur. list_filter bir filtre kenar çubuğu ekler.
Dekoratör, admin.site.register(Loan, LoanAdmin) ile aynı işi yapar. Her modeli yalnızca bir kez kaydedin: ikinci kez kaydetmek siteyi AlreadyRegistered hatasıyla durdurur.
Görev
Kolaybooks/admin.py içinde, Book modelini basitçe kaydetmek yerine ona bir BookAdmin tanımla. Kitaplar listesinde şunlar olmalı:
title,author,year,genreveis_readsütunları- kitapları başlığa veya yazarın adına göre bulan bir arama kutusu
genreveis_readalanlarına göre filtreleyen bir kenar çubuğu
createsuperuser komutunu yeniden çalıştır, oturum aç ve Kitaplar'da herbert için ara: Children of Dune ve Dune.
Kendin dene
from django.contrib import admin
from .models import Author, Book, Tag
admin.site.register(Book)
admin.site.register(Author)
admin.site.register(Tag)
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Modeller ve Yönetim Paneli bölümündeki tüm dersler
Kendi başına pratik yap: Django playground