Функция Field
Функция Field применяется внутри Pydantic-модели и позволяет
задать параметры конкретного поля. Первым параметром передаётся
значение по умолчанию, далее - именованные параметры вроде
default, alias, title, description,
gt, ge, lt, le, min_length,
max_length, pattern и другие. Функция возвращает
объект FieldInfo, который Pydantic использует при валидации.
Синтаксис
from pydantic import BaseModel, Field
class Model(BaseModel):
field: type = Field(default, *, alias=None, title=None, description=None, gt=None, ge=None, lt=None, le=None, min_length=None, max_length=None, pattern=None)
Пример
Давайте зададим значение по умолчанию и описание для поля:
from fastapi import FastAPI
from pydantic import BaseModel, Field
app = FastAPI()
class User(BaseModel):
name: str = Field(default='abcde', description='user name')
age: int = Field(default=18, ge=0, le=120)
@app.post('/user/')
def create_user(user: User):
return user
Результат выполнения запроса с пустым телом:
{"name": "abcde", "age": 18}
Пример
Давайте зададим псевдоним поля через параметр alias:
<+python+>
from fastapi import FastAPI
from pydantic import BaseModel, Field
app = FastAPI()
class Article(BaseModel):
title: str = Field(alias='article_title')
body: str = Field(min_length=1, max_length=1000)
@app.post('/article/')
def create_article(article: Article):
return article
<-python+>
Результат выполнения запроса с телом {"article_title": "hello", "body": "abcde"}:
{"title": "hello", "body": "abcde"}
Пример
Давайте ограничим числовое поле через параметры gt и lt:
from fastapi import FastAPI
from pydantic import BaseModel, Field
app = FastAPI()
class Product(BaseModel):
price: float = Field(gt=0, lt=10000)
quantity: int = Field(default=1, ge=1)
@app.post('/product/')
def create_product(product: Product):
return product
Результат выполнения запроса с телом {"price": 99.9, "quantity": 3}:
{"price": 99.9, "quantity": 3}
Смотрите также
-
класс
BaseModel,
который является основой для создания моделей -
функция
field_validator,
которая задаёт валидатор для отдельного поля -
атрибут
model_fields,
который хранит информацию о полях модели -
функция
conint,
которая задаёт ограничения для целочисленного типа