Ситуация
Во время работы с проверкой в Django REST Framework ModelSerializer
я заметил, что поля Meta.model
всегда проверяются, даже если это не имеет смысла. Возьмем следующий пример для сериализации модели User
:
- У меня есть конечная точка, которая создает пользователя. Таким образом, поле
password
и полеconfirm_password
. Если два поля не совпадают, пользователь не может быть создан. Аналогично, если запрошенныйusername
уже существует, пользователь не может быть создан. - Пользовательские POST-коды не соответствуют значениям для каждого из указанных выше полей.
- В сериализаторе была реализована реализация
validate
(см. ниже), улавливая не совпадающие поляpassword
иconfirm_password
Реализация validate
:
def validate(self, data):
if data['password'] != data.pop('confirm_password'):
raise serializers.ValidationError("Passwords do not match")
return data
Проблема
Даже когда ValidationError
поднят на validate
, ModelSerializer
по-прежнему запрашивает базу данных, чтобы проверить, используется ли username
. Это видно в списке ошибок, который возвращается из конечной точки; присутствуют как модельные, так и непарные ошибки.
Следовательно, я хотел бы знать, как предотвратить проверку модели до тех пор, пока не завершится проверка не-поля, сохранив вызов в моей базе данных.
Попытка решения
Я пытаюсь пройти через источник DRF, чтобы выяснить, где это происходит, но мне не удалось найти то, что мне нужно переопределить, чтобы заставить это работать.