ISOM 350 - Business Application Development
في الخطوة السابقة انشأنا صفحة مسؤول افتراضية بسيطة. جانغو يتيح لنا فهم طريقة العمل المسؤول بالتعريف عن فئة مسؤول النموذج (ModelAdmin) في blog/admin.py.
بدأنا بالتالي
from django.contrib import admin
from .models import Post
admin.site.register(Post)
لنعدلها للحصول على واجهة مسؤول عن طريق انشاء فئة PostAdmin المتوارثة من فئة ModelAdmin
from django.contrib import admin
from .models import Post
class PostAdmin(admin.ModelAdmin):
pass
admin.site.register(Post, PostAdmin) # Notice this line changed
لاحظ كيف عرفنا class PostAdmin(admin.ModelAdmin)
الفارغة,
هذا يعني ان يرث كل ماهو موجود في ModelAdmin.
إذا قمت باختباره, لن تلاحظ أي تغيير في واجهة المشرف الخاصة بنا وأن ما فعلناه للتو هو مجرد نسخة أطول مما فعلناه سابقًا. ومع ذلك ، فإن الإصدار الجديد أكثر مرونة ويسمح بفهم المسؤول.
سنعدل اولًا ما يظهر في قائمة Post admin , لذا قم بتعديل الكود ليبدو كالتالي:
from django.contrib import admin
from .models import Post
class PostAdmin(admin.ModelAdmin):
list_display = ('title', 'slug', 'status','created_on') # This line was added
admin.site.register(Post, PostAdmin)
هنا طلبنا ان الجدول الذي يعرض المنشورات يجب ان يعرض عمود يظهر العنوان و رابط الموقع والحالة والحقول المنشأة. قائمة المنشورات الخاصة بنا شتظهر بهذا الشكل:
بعد ذلك ، دعنا نضيف القدرة على تصفية هذه القائمة حسب الحالة:
from django.contrib import admin
from .models import Post
class PostAdmin(admin.ModelAdmin):
list_display = ('title', 'slug', 'status','created_on')
list_filter = ("status",) # This line was added
admin.site.register(Post, PostAdmin)
الآن لدينا الخيار بتصنيف (اظهار) كل المنشورات, او المنشورات المحفوظة فقط, او المنشورات المنشرة فقط.
كما ترى ، كلما أردنا تهيئة المسؤول ، نضيف سمة (سطر) تقوم بتهيئة ميزات ModelAdmin لمنشوراتنا وتنعكس هذه التهيئات في نموذج المسؤول لدينا.
لننظر إلى تهيئتين اخريين, أولًا, لنضيف امكانية البحث عن المنشورات, هنا نحن اضفنا امكانية البحث عن المنشورات في واجهة المسؤول بإستخدام حقول العنوان والمحتوى.
from django.contrib import admin
from .models import Post
class PostAdmin(admin.ModelAdmin):
list_display = ('title', 'slug', 'status','created_on')
list_filter = ("status",) # This line was added
search_fields = ['title', 'content']
admin.site.register(Post, PostAdmin)
اخيرًا, عند انشاء منشور, نود ملء حفل رابط الموقع بمعلومات من العنوان الرئيسي. عادة ما يتم انشاء رابط الموقع (Slug) عن طريق استبدال المسافات في العنوان ب (-) نظرَا لكونها عملية شائعة في تطوير الويب فإن جانغو يوفرها لنا
from django.contrib import admin
from .models import Post
class PostAdmin(admin.ModelAdmin):
list_display = ('title', 'slug', 'status','created_on')
list_filter = ("status",) # This line was added
search_fields = ['title', 'content']
prepopulated_fields = {'slug': ('title',)}
admin.site.register(Post, PostAdmin)
هناك بالتأكيد المزيد حول واجهة المسؤول التي لا يمكننا تغطيتها في هذه الدورة التدريبية. الطريقة لمعرفة ما هو متاح هي الاستمرار في قراءة: Django admin documentation وتجريب الميزات الجديدة.