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 her kitabın __str__ değerini gösteren tek bir sütun var ve hiçbir şeyi bulmanın bir yolu yok. Dekoratörle kaydedilen bir ModelAdmin sınıfı bunu değiştirir. ForeignKey book 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ı seçer; 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. ForeignKey üzerinden arama yapmak için, diğer modelin bir alanını iki alt çizgiyle birlikte belirt: book__title. Tek başına book bir bağlantıdır, metin değildir ve aramanın çökmesine neden olur. list_filter bir filtre kenar çubuğu ekler.
Bu dekoratör, admin.site.register(Loan, LoanAdmin) ile aynı işi yapar. Her modeli bir kez kaydet: ikinci kez kaydetmek siteyi AlreadyRegistered hatasıyla durdurur.
Görev
Kolaybooks/admin.py dosyasında, Book modeline varsayılan kaydı yerine bir BookAdmin tanımlayın. Kitaplar listesinde şunlar bulunmalı:
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 filtreleme yapan bir kenar çubuğu
Run'a basın, tekrar oturum açın ve herbert için arama yapın.
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