diff --git a/myproject/pos/views.py b/myproject/pos/views.py index 51a9a5e..230ac46 100644 --- a/myproject/pos/views.py +++ b/myproject/pos/views.py @@ -803,7 +803,8 @@ def get_items_api(request): 'type': 'product', 'available_qty': str(available), 'reserved_qty': str(reserved), - 'free_qty': float(free_qty) # Для сортировки + 'free_qty': str(free_qty), # Передаём как строку для сохранения точности + 'free_qty_sort': float(free_qty) # Для сортировки отдельное поле }) # Prefetch для первого фото комплектов @@ -853,22 +854,23 @@ def get_items_api(request): 'sku': k.sku or '', 'image': image_url, 'type': 'kit', - 'free_qty': 0 # Для сортировки комплекты всегда внизу + 'free_qty': '0', # Строка для консистентности с товарами + 'free_qty_sort': 0 # Комплекты всегда внизу при сортировке }) - # Объединяем и сортируем по free_qty DESC + # Объединяем и сортируем по free_qty_sort DESC all_items = products + kits - all_items.sort(key=lambda x: x['free_qty'], reverse=True) + all_items.sort(key=lambda x: x['free_qty_sort'], reverse=True) # Пагинация paginator = Paginator(all_items, page_size) page_obj = paginator.get_page(page) - # Удаляем временное поле free_qty из результата + # Удаляем временное поле free_qty_sort из результата (оставляем free_qty как строку) items_to_return = [] for item in page_obj.object_list: item_copy = item.copy() - item_copy.pop('free_qty', None) + item_copy.pop('free_qty_sort', None) # Удаляем только free_qty_sort items_to_return.append(item_copy) return JsonResponse({