diff --git a/myproject/products/forms.py b/myproject/products/forms.py index 91f0b25..13993f8 100644 --- a/myproject/products/forms.py +++ b/myproject/products/forms.py @@ -36,15 +36,19 @@ class SKUUniqueMixin: return None sku = sku.strip() - + # Проверяем зарезервированные префиксы + # Но пропускаем проверку, если это редактирование и артикул не изменился sku_upper = sku.upper() - for prefix, entity_type in self.RESERVED_PREFIXES.items(): - if sku_upper.startswith(prefix): - raise forms.ValidationError( - f'Префикс "{prefix}" зарезервирован для автоматической генерации артикулов {entity_type}. ' - f'Пожалуйста, используйте другой артикул или оставьте поле пустым для автогенерации.' - ) + is_existing_sku = self.instance.pk and self.instance.sku == sku + + if not is_existing_sku: + for prefix, entity_type in self.RESERVED_PREFIXES.items(): + if sku_upper.startswith(prefix): + raise forms.ValidationError( + f'Префикс "{prefix}" зарезервирован для автоматической генерации артикулов {entity_type}. ' + f'Пожалуйста, используйте другой артикул или оставьте поле пустым для автогенерации.' + ) # Проверяем во всех моделях models_to_check = [