Правильный способ работы с уникальными ограничениями

Я пытаюсь найти способ проверить, существует ли уже имя пользователя или его 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.')```
Вернуться на верх