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']