diff --git a/myproject/inventory/services/showcase_manager.py b/myproject/inventory/services/showcase_manager.py index 8299a76..384ba3d 100644 --- a/myproject/inventory/services/showcase_manager.py +++ b/myproject/inventory/services/showcase_manager.py @@ -151,7 +151,17 @@ class ShowcaseManager: try: with transaction.atomic(): - for showcase_item in showcase_items: + # Собираем ID для перезагрузки с блокировкой + showcase_item_ids = [item.id for item in showcase_items] + + # Перезагружаем объекты из БД с блокировкой для актуального статуса + showcase_items_locked = list( + ShowcaseItem.objects.select_for_update().filter( + id__in=showcase_item_ids + ) + ) + + for showcase_item in showcase_items_locked: # Проверка статуса перед продажей if showcase_item.status == 'sold': raise ValidationError(