Правильный способ работы с уникальными ограничениями
Я пытаюсь найти способ проверить, существует ли уже имя пользователя или его Email в базе данных, а затем вернуть ValidationError с соответствующим сообщением об ошибке. Однако я не вижу способа сделать это без вызова нескольких запросов или без того, чтобы это выглядело странно (добавление сериализатора в службу)...
Существует ли практика кодирования, чтобы сделать это правильно? Это лишь один из многих возможных случаев использования:
users = User.objects.filter(Q(email=email) | Q(username=username))
if users.exists():
for user in users: # There could be two
if user.email == email:
raise ValidationError('Email already exists.')
else:
raise ValidationError('Username already exists.')```