Перейти к содержанию

Валидация на уровне базы данных

Методы create и update выполняют валидацию переданных значений на уровне БД, а именно:

Валидация существования внешних ключей

Ecли Child.parent_id -- это ForeignKey на Parent.id, и значение parent_id устанавливается через child_manager.create или child_manager.update, то будет выполнен SQL запрос для проверки существования Parent с переданным id.

Если такого объекта не существует, будет вызван fastapi.HTTPException.

Валидация существования M2M связей

Ecли Post.tags -- это ManyToMany связь с Tag.id, и значение tags устанавливается через post_manager.create или post_manager.update в виде переданного списка id, то будет выполнен SQL запрос для проверки существования всех Tag с переданными id.

Если какого-либо из объектов не существует, будет вызван fastapi.HTTPException.

Валидация уникальных полей

Ecли Post.slug -- поле, определённое с unique=True, и значение slug устанавливается через post_manager.create или post_manager.update, то будет выполнен SQL запрос для проверки того, что не существует другого объекта Post с передаваемым значением slug.

Если уникальность значения поля будет нарушена, вызывается fastapi.HTTPException.

Валидация уникальных ограничений

Если в модели определены уникальные ограничения через sqlalchemy.UniqueConstraint, то при использовании методов create или update будет выполнен SQL запрос для проверки существования других объектов с таким же набором значений полей, входящих в уникальное огранчение.

Если уникальное ограничение будет нарушено, вызывается fastapi.HTTPException.