تنظیم List Display در Django Admin

django admin set list display
20 آبان 1403

وقتی با Django کار می‌کنید، یکی از قابلیت‌های کلیدی آن بخش اداری یا همان Admin است. این بخش به شما امکان می‌دهد به راحتی مدل‌های داده‌ای خود را مدیریت کنید. یکی از امکاناتی که می‌تواند به شدت در صرفه‌جویی زمان و افزایش کارآیی کمک کند، قابلیت تنظیم نمایش فهرست یا همان List Display است.

List Display به شما این امکان را می‌دهد که مشخص کنید کدام اجزای مدل‌تان در صفحه لیست نمایش داده شوند. به جای اینکه تنها عنوان آیتم‌ها را ببینید، می‌توانید اطلاعات تکمیلی را هم در قالب ستون‌های مختلف در کنار هر آیتم نشان دهید.

برای این کار، باید کلاس Admin مدل خود را تنظیم کنید. شما می‌توانید با افزودن یک ویژگی به نام list_display در کلاس Admin خود، به راحتی کنترل کنید که چه داده‌هایی نمایش داده شوند.

این ویژگی شامل یک لیست از نام‌های فیلدهایی است که می‌خواهید در جدول نمایش داده شوند. بیایید نگاهی به یک مثال ساده بیندازیم تا بهتر این ویژگی را درک کنیم.

فرض کنید یک مدل بنام Book دارید که شامل فیلد‌های عنوان، نویسنده، تاریخ انتشار و ناشر است. حالا می‌خواهیم این اطلاعات را در پنل Admin نمایش دهیم.


from django.contrib import admin
from .models import Book

class BookAdmin(admin.ModelAdmin):
list_display = ('title', 'author', 'publication_date', 'publisher')

admin.site.register(Book, BookAdmin)

در قسمت کد بالا، ابتدا ما مدل Book را از فایل models وارد کردیم. سپس کلاس BookAdmin را ایجاد کردیم که از admin.ModelAdmin ارث‌بری می‌کند. در این کلاس، ویژگی list_display را تنظیم کردیم و نام فیلدهایی که می‌خواهیم نشان دهیم را وارد کردیم. در نهایت، با استفاده از متد admin.site.register، مدل Book و کلاس BookAdmin را به پنل Admin اضافه کردیم.

هر بار که صفحه Admin را برای مدل Book باز می‌کنید، می‌توانید ستون‌هایی را مشاهده کنید که اطلاعات مربوط به عنوان، نویسنده، تاریخ انتشار و ناشر را نمایش می‌دهند. این کار به شما کمک می‌کند که به سرعت اطلاعات مورد نظرتان را پیدا و مدیریت کنید.

سوالات متداول

؟

چگونه می‌توانم اطلاعات بیشتری را در پنل Admin Django نمایش دهم؟

؟

چرا باید از List Display استفاده کنیم؟

؟

آیا می‌توانیم ویژگی‌های محاسباتی هم در List Display تعریف کنیم؟