РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
180 of 307 menu

Атрибут model_fields

Атрибут model_fields доступен у любого класса, унаследованного от BaseModel. Он возвращает словарь, ключами которого являются имена полей модели, а значениями - объекты FieldInfo с метаданными каждого поля: типом, значением по умолчанию, описанием и другими параметрами. Атрибут доступен как у самого класса модели, так и у его экземпляров.

Синтаксис

Model.model_fields instance.model_fields

Пример

Давайте создадим простую модель и посмотрим на её атрибут model_fields:

from pydantic import BaseModel class User(BaseModel): name: str age: int email: str = 'user@example.com' print(User.model_fields)

Результат выполнения кода:

{'name': FieldInfo(annotation=str, required=True), 'age': FieldInfo(annotation=int, required=True), 'email': FieldInfo(annotation=str, required=False, default='user@example.com')}

Пример

Давайте переберём поля модели и выведем имя и тип каждого из них:

from pydantic import BaseModel class Article(BaseModel): title: str views: int published: bool = False for name, field in Article.model_fields.items(): print(name, field.annotation)

Результат выполнения кода:

title <class 'str'> views <class 'int'> published <class 'bool'>

Пример

Давайте получим значение по умолчанию для конкретного поля через model_fields:

<+python+> from pydantic import BaseModel class User(BaseModel): name: str role: str = 'user' field = User.model_fields['role'] print(field.default) print(field.is_required()) <-python+>

Результат выполнения кода:

user False

Пример

Давайте используем model_fields вместе с FastAPI, чтобы динамически собрать информацию о теле запроса:

from fastapi import FastAPI from pydantic import BaseModel app = FastAPI() class User(BaseModel): name: str age: int @app.post('/user') def create_user(user: User): fields = list(User.model_fields.keys()) return {'fields': fields, 'data': user}

Результат выполнения кода для тела {"name": "abcde", "age": 25}:

{"fields": ["name", "age"], "data": {"name": "abcde", "age": 25}}

Смотрите также

  • класс BaseModel,
    от которого наследуются все модели Pydantic
  • метод model_dump,
    который превращает модель в словарь
  • атрибут model_config,
    который хранит настройки модели
  • функция Field,
    которая задаёт метаданные для поля модели
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить