Валидация на уровне базы данных¶
Методы 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
.