Menu
CoddyTech

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.

challenge icon

Görev

Kolay

books/admin.py içinde, Book modelini basitçe kaydetmek yerine ona bir BookAdmin tanımla. Kitaplar listesinde şunlar olmalı:

  • title, author, year, genre ve is_read sütunları
  • kitapları başlığa veya yazarın adına göre bulan bir arama kutusu
  • genre ve is_read alanları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)
quiz iconKendini test et

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