diff --git a/admin_panel/templates/admin_panel/operations.html b/admin_panel/templates/admin_panel/operations.html index 2599507..a81b4d1 100644 --- a/admin_panel/templates/admin_panel/operations.html +++ b/admin_panel/templates/admin_panel/operations.html @@ -2,16 +2,16 @@ {% load custom_tags %} {% block storeBody %} -

{{ storeO.store_name }}

+

{{ storeO.store_name }}

- +
- - + + @@ -19,8 +19,8 @@ - - + + @@ -29,6 +29,9 @@ + @@ -58,4 +61,4 @@ {% endif %} -{% endblock %} \ No newline at end of file +{% endblock %} \ No newline at end of file diff --git a/admin_panel/views.py b/admin_panel/views.py index 221cece..745b51b 100644 --- a/admin_panel/views.py +++ b/admin_panel/views.py @@ -599,8 +599,13 @@ def store(request, s_id): def operations(request, s_id): page = request.GET.get('page', 1) productCategory = ProductCategory.objects.all() - storeO = StoreRoom.objects.get(id=s_id) - operationsList = ProductInStore.objects.filter(StoreRoom=storeO, year=1400).order_by('-createdDT') + storeO = get_object_or_404(StoreRoom, id=s_id) + + # بهینه‌سازی کلیدی: استفاده از select_related برای جلوگیری از کندی و پر شدن RAM دیتابیس + operationsList = ProductInStore.objects.filter( + StoreRoom=storeO, year=1400 + ).select_related('Product').order_by('-createdDT') + paginator = Paginator(operationsList, 25) try: data_list = paginator.page(page) @@ -609,16 +614,32 @@ def operations(request, s_id): except EmptyPage: data_list = paginator.page(paginator.num_pages) - data = {'storeO': storeO, 'operationsList': data_list, 's_id': s_id, 'productCategory': productCategory} + data = { + 'storeO': storeO, + 'operationsList': data_list, + 's_id': s_id, + 'productCategory': productCategory + } return render(request, 'admin_panel/operations.html', data) + @login_required(login_url='/panel/p_login/') @permission_required('admin_panel.ViewStore', raise_exception=True) def operationProduct(request, s_id, p_id): productCategory = ProductCategory.objects.all() - storeO = StoreRoom.objects.get(id=s_id) - operationsList = ProductInStore.objects.filter(StoreRoom=storeO, year=1400, Product__id=p_id).order_by('-createdDT') - data = {'storeO': storeO, 'operationsList': operationsList, 's_id': s_id, 'productCategory': productCategory} + storeO = get_object_or_404(StoreRoom, id=s_id) + + # بهینه‌سازی کلیدی در فیلتر اختصاصی محصول + operationsList = ProductInStore.objects.filter( + StoreRoom=storeO, year=1400, Product__id=p_id + ).select_related('Product').order_by('-createdDT') + + data = { + 'storeO': storeO, + 'operationsList': operationsList, + 's_id': s_id, + 'productCategory': productCategory + } return render(request, 'admin_panel/operations.html', data) @login_required(login_url='/panel/p_login/')
نام محصول ورود خروجتوضیحاتناریخمانده در لحظه توضیحاتتاریخ
نام محصول ورود خروجتوضیحاتناریخمانده در لحظه توضیحاتتاریخ
{{ operation.Product.product_name }} {{ operation.s_in }} {{ operation.s_out }} + {{ operation.current_stock_at_time }} + {{ operation.desc }} {{ operation.createdDT | toJalali }}