تخصيص لوحة الإدارة
جزء من قسم النماذج ولوحة الإدارة في رحلة 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، عيّن BookAdmin إلى Book بدلًا من تسجيله بالطريقة العادية. يجب أن تتضمن قائمة الكتب ما يلي:
- أعمدة لـ
titleوauthorوyearوgenreوis_read - مربع بحث يعثر على الكتب حسب العنوان أو اسم المؤلف
- شريط جانبي للتصفية حسب
genreوis_read
اضغط على Run، وسجّل الدخول مجددًا، ثم ابحث عن herbert.
جرّب بنفسك
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