ویرگول
ورودثبت نام
رضا رضایی
رضا رضاییبرنامه‌نویس جونیور بک‌اند با تمرکز بر پایتون و فریم‌ورک جنگو. علاقه‌مند به ساخت برنامه‌های تحت وب مقیاس‌پذیر و قابل اعتماد. مشتاق مشارکت در پروژه‌های واقعی و پیشرفت در توسعه بک‌اند.
رضا رضایی
رضا رضایی
خواندن ۳ دقیقه·۴ روز پیش

۱.۱۰: شخصی سازی و ارتقا پنل ادمین جنگو | ترجمه کتاب Django 5 By Example

ادامه ترجمه کتاب Django 5 By Example - فصل اول - قسمت ۱۰

شخصی سازی پنل ادمین در جنگو
شخصی سازی پنل ادمین در جنگو

اکنون نگاهی خواهیم داشت به اینکه چگونه سایت مدیریت (Administration site) را شخصی‌سازی کنیم. فایل admin.py اپلیکیشن وبلاگ خود را ویرایش کرده و آن را مطابق زیر تغییر دهید.

from django.contrib import admin from .models import Post @admin.register(Post) class PostAdmin(admin.ModelAdmin): list_display = ['title', 'slug', 'author', 'publish', 'status']

ما به سایت مدیریت جنگو می‌گوییم که مدل (Model) با استفاده از یک کلاس سفارشی که از ModelAdmin ارث‌بری می‌کند، در سایت ثبت شده است. در این کلاس، می‌توانیم اطلاعاتی در مورد نحوه نمایش مدل در سایت مدیریت و چگونگی تعامل با آن را اضافه کنیم.

ویژگی list_display به شما اجازه می‌دهد فیلدهایی از مدل خود را که می‌خواهید در صفحه لیست اشیاء (Object list page) در مدیریت نمایش داده شوند، تنظیم کنید. دکوریتر @admin.register() همان عملکرد تابع admin.site.register() را که جایگزین کرده‌اید، انجام می‌دهد و کلاس ModelAdminای که دکور شده است را ثبت می‌کند.

بیایید مدل ادمین را با گزینه‌های بیشتری شخصی‌سازی کنیم. فایل admin.py اپلیکیشن وبلاگ خود را ویرایش کرده و آن را مطابق زیر تغییر دهید:

from django.contrib import admin from .models import Post @admin.register(Post) class PostAdmin(admin.ModelAdmin): list_display = ['title', 'slug', 'author', 'publish', 'status'] list_filter = ['status', 'created', 'publish', 'author'] search_fields = ['title', 'body'] prepopulated_fields = {'slug': ('title',)} raw_id_fields = ['author'] date_hierarchy = 'publish' ordering = ['status', 'publish']

به مرورگر خود بازگردید و صفحه لیست پست‌ها را رفرش کنید. اکنون، این صفحه به شکل زیر خواهد بود:

لیست نمایش اختصاصی مدل پست در پنل ادمین جنگو
لیست نمایش اختصاصی مدل پست در پنل ادمین جنگو

می‌توانید مشاهده کنید فیلدهایی که در صفحه لیست پست‌ها نمایش داده می‌شوند، همان‌هایی هستند که ما در ویژگی (attribute) list_display مشخص کرده‌ایم. اکنون صفحه لیست شامل یک نوار کناری (sidebar) در سمت راست است که به شما اجازه می‌دهد نتایج را بر اساس فیلدهای موجود در ویژگی list_filter فیلتر کنید. فیلترهای مربوط به فیلدهای ForeignKey (مانند author) تنها در صورتی در نوار کناری نمایش داده می‌شوند که بیش از یک شیء (object) در پایگاه داده وجود داشته باشد.

یک نوار جستجو (search bar) نیز در صفحه ظاهر شده است؛ دلیل این امر آن است که ما فهرستی از فیلدهای قابل جستجو را با استفاده از ویژگی search_fields تعریف کرده‌ایم. درست در زیر نوار جستجو، لینک‌های ناوبری برای پیمایش در یک سلسله‌مراتب زمانی (date hierarchy) قرار دارند؛ این قابلیت توسط ویژگی date_hierarchy تعریف شده است. همچنین مشاهده می‌کنید که پست‌ها به‌صورت پیش‌فرض بر اساس ستون‌های status و publish مرتب شده‌اند. ما معیار مرتب‌سازی پیش‌فرض را با استفاده از ویژگی ordering مشخص کرده‌ایم.

در مرحله بعد، روی لینک ADD POST کلیک کنید. در اینجا نیز متوجه تغییراتی خواهید شد: همزمان با تایپ کردن عنوان (title) یک پست جدید، فیلد slug به‌صورت خودکار پر می‌شود. شما با استفاده از ویژگی prepopulated_fields به جنگو گفته‌اید که فیلد slug را با استفاده از ورودیِ فیلد title به‌طور خودکار پیش-پردازش (prepopulate) کند:

همچنین، فیلد author اکنون با یک ویجت جستجو (lookup widget) نمایش داده می‌شود که وقتی با هزاران کاربر روبرو هستید، می‌تواند بسیار بهتر از یک منوی کشویی (drop-down) برای انتخاب ورودی عمل کند. این قابلیت با استفاده از ویژگی raw_id_fields محقق شده است و به این شکل به نظر می‌رسد:


پست قبلی: (فصل اول - قسمت ۹ ایجاد پنل مدیریت و ایجاد کاربر به عنوان مدیر ارشد)

پست بعدی: (فصل اول - اپیزود ۱۱ - اضافه کردن آیکون شمارنده برای فیلترها - Facet Counts)

ترجمه کتاب
۳
۰
رضا رضایی
رضا رضایی
برنامه‌نویس جونیور بک‌اند با تمرکز بر پایتون و فریم‌ورک جنگو. علاقه‌مند به ساخت برنامه‌های تحت وب مقیاس‌پذیر و قابل اعتماد. مشتاق مشارکت در پروژه‌های واقعی و پیشرفت در توسعه بک‌اند.
شاید از این پست‌ها خوشتان بیاید