تخصيص لوحة الإدارة
جزء من قسم النماذج ولوحة الإدارة في رحلة Django على Coddy. الدرس 21 من 23.
تحتوي قائمة الكتب في لوحة الإدارة على عمود واحد، وهو __str__ لكل كتاب، ولا توجد طريقة للعثور على أي شيء. يغيّر صنف ModelAdmin، المسجّل باستخدام المُزخرف، ذلك. بالنسبة إلى Loan الذي يحتوي على 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 الأعمدة؛ ويعرض عمود ForeignKey قيمة __str__ للصف المرتبط، ولا يمكن أن يكون الحقل متعدد إلى متعدد عمودًا. يضيف search_fields مربع بحث. للبحث عبر ForeignKey، اكتب اسم حقل من النموذج الآخر بعد شرطتين سفليتين، مثل book__title: إن book وحده رابط وليس نصًا، وسيؤدي إلى تعطل البحث. يضيف list_filter شريطًا جانبيًا من عوامل التصفية.
يؤدي المُزخرف الوظيفة نفسها التي يؤديها admin.site.register(Loan, LoanAdmin). سجّل كل نموذج مرة واحدة: فالتسجيل مرة ثانية يوقف الموقع مع ظهور AlreadyRegistered.
التحدي
سهلفي books/admin.py، أضف إلى Book إعدادات BookAdmin بدلًا من تسجيله العادي. يجب أن تتضمن قائمة الكتب ما يلي:
- أعمدة لـ
titleوauthorوyearوgenreوis_read - مربع بحث يعثر على الكتب حسب العنوان أو اسم المؤلف
- شريط جانبي للتصفية حسب
genreوis_read
شغّل createsuperuser مجددًا، وسجّل الدخول وابحث عن herbert ضمن الكتب: Children of Dune وDune.
جرّب بنفسك
from django.contrib import admin
from .models import Author, Book, Tag
admin.site.register(Book)
admin.site.register(Author)
admin.site.register(Tag)
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس النماذج ولوحة الإدارة
تدرّب بنفسك: Playground لـ Django