Files
khatibi/admin_panel/admin.py
T
2026-07-03 16:52:04 +03:30

52 lines
2.1 KiB
Python

from django.contrib import admin
# Register your models here.
from .models import *
admin.site.register(Customer)
admin.site.register(PhoneNumber)
admin.site.register(StoreRoom)
admin.site.register(ProductCategory)
admin.site.register(Product)
admin.site.register(ProductInStore)
admin.site.register(Factor)
admin.site.register(FactorIteam)
admin.site.register(VisitQueue)
admin.site.register(ArticleType)
admin.site.register(Article)
admin.site.register(Sarresid)
admin.site.register(Action)
admin.site.register(CacheTable)
admin.site.register(ProductStockHistory)
@admin.register(StoreTransferRequest)
class StoreTransferRequestAdmin(admin.ModelAdmin):
# ۱. حل مشکل لودینگ و هنگ کردن فرم (تبدیل منوی کشویی غول‌آسا به باکس شناسه عددی)
# این دستور فیلدهای پرجمعیت را به شدت بهینه و سبک می‌کند
raw_id_fields = ['out_transaction', 'in_transaction', 'product', 'requester', 'approver']
# ۲. ستون‌هایی که می‌خواهید در صفحه جدول (Changelist) نمایش داده شوند
list_display = [
'id',
'source_store',
'target_store',
'product',
'quantity',
'status',
'created_at',
'action_date'
]
# ۳. فیکس قطعی باگ N+1 (لود کردن روابط در یک کوئری واحد به جای صدها کوئری تودرتو برای __str__)
list_select_related = ['source_store', 'target_store', 'product', 'requester', 'approver']
# ۴. فیلترهای سمت راست صفحه (فقط روی فیلدهای کم‌جمعیت مثل وضعیت و انبار فیلتر بگذارید)
list_filter = ['status', 'source_store', 'target_store', 'created_at']
# ۵. باکس جستجوی بهینه شده
search_fields = ['id', 'desc', 'product__product_name', 'requester__username']
# ۶. غیرقابل ادیت کردن فیلدهای حساس مالی در پنل ادمین (اختیاری اما برای Enterprise الزامی است)
readonly_fields = ['created_at', 'updated_at']