Проблема: При попытке продажи 2+ экземпляров одного витринного букета возникала ошибка IntegrityError, так как поле sold_order_item было OneToOneField. Это означало что к одному OrderItem мог быть привязан только один ShowcaseItem, что делало невозможной продажу нескольких экземпляров в одной позиции заказа. Решение: 1. Изменен тип поля sold_order_item с OneToOneField на ForeignKey - Теперь несколько ShowcaseItem могут относиться к одному OrderItem - related_name изменен с 'sold_showcase_item' на 'sold_showcase_items' 2. Обновлен метод mark_sold в модели ShowcaseItem - Добавлена явная проверка статуса 'sold' перед продажей - Генерируется ValidationError если экземпляр уже продан - Удален комментарий про OneToOneField защиту 3. Обновлена обработка ошибок в ShowcaseManager.sell_showcase_items - Убрана обработка IntegrityError - Добавлена обработка ValidationError от mark_sold 4. Создана миграция 0012_change_sold_order_item_to_fk Теперь можно успешно продавать 2 и более экземпляров одного витринного букета в рамках одной позиции заказа.
46 KiB
46 KiB