Параметр include
Параметр include применяется к функции jsonable_encoder
для указания полей, которые должны быть включены
в итоговый словарь. Принимает множество строк
с именами полей модели. Поля, не входящие в это множество,
будут исключены из результата. Это удобно, когда нужно
отдать клиенту только часть данных модели.
Синтаксис
jsonable_encoder(obj, include={'field1', 'field2'})
Пример
Давайте рассмотрим модель User с тремя полями
и включим в результат только поля name и age:
from fastapi import FastAPI
from fastapi.encoders import jsonable_encoder
from pydantic import BaseModel
app = FastAPI()
class User(BaseModel):
name: str
age: int
email: str
@app.get('/user')
def get_user():
user = User(name='abcde', age=25, email='user@mail.com')
res = jsonable_encoder(user, include={'name', 'age'})
return res
Результат выполнения кода:
{"name": "abcde", "age": 25}
Пример
Давайте применим include к вложенным моделям.
У нас будет модель Article, содержащая вложенную модель Author:
from fastapi import FastAPI
from fastapi.encoders import jsonable_encoder
from pydantic import BaseModel
app = FastAPI()
class Author(BaseModel):
name: str
email: str
class Article(BaseModel):
title: str
body: str
author: Author
@app.get('/article')
def get_article():
article = Article(
title='hello',
body='article body',
author=Author(name='abcde', email='user@mail.com')
)
res = jsonable_encoder(
article,
include={'title', 'author': {'name'}}
)
return res
Результат выполнения кода:
{"title": "hello", "author": {"name": "abcde"}}
Как видно из примера, для вложенных моделей
значением include передаётся словарь,
где ключ - имя поля, а значение - множество
включаемых полей вложенной модели.
Смотрите также
-
параметр
exclude,
который исключает указанные поля из результата -
параметр
by_alias,
который использует алиасы полей при кодировании -
параметр
exclude_unset,
который исключает поля, не заданные явно -
функция
jsonable_encoder,
которая преобразует модели в JSON-совместимые словари