Исправлена валидация SKU: разрешено сохранение существующего артикула

При редактировании товара проверка зарезервированных префиксов теперь
пропускается, если артикул не изменился. Это позволяет редактировать
товары с автоматически сгенерированными артикулами.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-03 00:16:33 +03:00
parent 7ccdbbdfb5
commit b4f42f97b0

View File

@@ -38,13 +38,17 @@ class SKUUniqueMixin:
sku = sku.strip() sku = sku.strip()
# Проверяем зарезервированные префиксы # Проверяем зарезервированные префиксы
# Но пропускаем проверку, если это редактирование и артикул не изменился
sku_upper = sku.upper() sku_upper = sku.upper()
for prefix, entity_type in self.RESERVED_PREFIXES.items(): is_existing_sku = self.instance.pk and self.instance.sku == sku
if sku_upper.startswith(prefix):
raise forms.ValidationError( if not is_existing_sku:
f'Префикс "{prefix}" зарезервирован для автоматической генерации артикулов {entity_type}. ' for prefix, entity_type in self.RESERVED_PREFIXES.items():
f'Пожалуйста, используйте другой артикул или оставьте поле пустым для автогенерации.' if sku_upper.startswith(prefix):
) raise forms.ValidationError(
f'Префикс "{prefix}" зарезервирован для автоматической генерации артикулов {entity_type}. '
f'Пожалуйста, используйте другой артикул или оставьте поле пустым для автогенерации.'
)
# Проверяем во всех моделях # Проверяем во всех моделях
models_to_check = [ models_to_check = [