Проблема: товары отображались как "нет в наличии" несмотря на наличие остатков на складе. Причина: сигналы на обновление Product.in_stock срабатывают только при изменении Stock через Django ORM. Если Stock была создана напрямую (импорт, миграция и т.д.), сигналы не срабатывали. Решение: 1. Исправлена логика сигналов (inventory/signals.py): - Добавлен импорт post_delete для правильной обработки удаления Stock - Изменён pre_delete на post_delete для более надёжной проверки остатков - Сигналы теперь правильно срабатывают при любом изменении Stock 2. Добавлена миграция (products/migrations/0004_fix_product_in_stock.py): - Пересчитывает in_stock для всех существующих товаров на основе Stock.quantity_available - Товар считается в наличии если есть хотя бы один Stock с quantity_available > 0 - Обратима и безопасна (может быть отменена) 3. Добавлена команда управления (products/management/commands/update_product_in_stock.py): - Позволяет вручную пересчитать in_stock если потребуется - Поддерживает параметр --verbose для подробного логирования - Может быть запущена по расписанию или вручную После этого исправления: - Все товары с остатками на складе автоматически обновляют статус in_stock - Сигналы срабатывают при любом изменении Stock (создание, обновление, удаление) - Отображение наличия товаров в UI будет корректным 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
2.8 KiB
2.8 KiB