Задайте уникальное ограничение на артикул в базе данных. Проверка существования перед вставкой полезна для интерфейса, но не защищает от конкурентных запросов.
Определить модель продукта с проверкой уникального кода
Задайте уникальное ограничение на артикул в базе данных. Проверка существования перед вставкой полезна для интерфейса, но не защищает от конкурентных запросов.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Создайте модель продукта, включающую поля: артикул (уникальный идентификатор), название и стоимость. Реализуйте механизм, который гарантирует, что значение артикулa не повторяется в системе.
Ответ
Задайте уникальное ограничение на артикул в базе данных. Проверка существования перед вставкой полезна для интерфейса, но не защищает от конкурентных запросов.
Например, модель Django:
from django.db import models
class Product(models.Model):
sku = models.CharField(max_length=64, unique=True)
name = models.CharField(max_length=255)
price = models.DecimalField(max_digits=12, decimal_places=2)
После миграции БД отклонит повторный артикул даже при одновременном создании двух товаров. IntegrityError перехватывают снаружи блока transaction.atomic, переводя конфликт в понятную ошибку API. Не следует превращать любую ошибку целостности в «артикул занят» без проверки причины.
Отдельно определите правила регистра, пробелов и нормализации артикула. Если abc и ABC считаются одним кодом, обычной регистрозависимой уникальности недостаточно.