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