Тип UUID4
Тип UUID4 применяется в моделях Pydantic
для описания поля, которое должно содержать
уникальный идентификатор версии 4.
При валидации Pydantic принимает строку
в формате UUID, объект uuid.UUID
или значение, приводимое к UUID.
Если значение не соответствует формату,
возникает ошибка валидации.
При сериализации в JSON значение отдаётся строкой.
Тип импортируется из модуля pydantic
и используется как аннотация поля в модели,
наследуемой от BaseModel.
Синтаксис
from pydantic import UUID4
Пример
Давайте создадим модель с полем типа UUID4
и проверим валидацию на корректном значении:
from fastapi import FastAPI
from pydantic import BaseModel, UUID4
app = FastAPI()
class User(BaseModel):
id: UUID4
name: str
@app.post('/user/')
def create_user(user: User):
return user
Результат выполнения кода для тела запроса
{"id": "123e4567-e89b-42d3-a456-426614174000", "name": "abcde"}:
{"id": "123e4567-e89b-42d3-a456-426614174000", "name": "abcde"}
Пример
Давайте передадим некорректное значение и посмотрим, как отреагирует валидация:
from fastapi import FastAPI
from pydantic import BaseModel, UUID4
app = FastAPI()
class User(BaseModel):
id: UUID4
name: str
@app.post('/user/')
def create_user(user: User):
return user
Результат выполнения кода для тела запроса
{"id": "not-a-uuid", "name": "abcde"}:
{
"detail": [
{
"type": "uuid_parsing",
"loc": ["body", "id"],
"msg": "Input should be a valid UUID, invalid character: expected an optional prefix of `urn:uuid:` followed by [0-9a-fA-F-], found `n` at 1",
"input": "not-a-uuid",
"ctx": {
"error": "invalid character: expected an optional prefix of `urn:uuid:` followed by [0-9a-fA-F-], found `n` at 1"
}
}
]
}
Пример
Давайте создадим объект модели напрямую
и получим значение поля как объект uuid.UUID:
from pydantic import BaseModel, UUID4
class User(BaseModel):
id: UUID4
name: str
user = User(id='123e4567-e89b-42d3-a456-426614174000', name='abcde')
res = user.id
print(type(res))
Результат выполнения кода:
<class 'uuid.UUID'>
Смотрите также
-
класс
BaseModel,
от которого наследуются все модели Pydantic -
функция
Field,
которая настраивает параметры поля модели -
метод
model_dump,
который сериализует модель в словарь -
метод
model_validate,
который валидирует данные и создаёт модель