Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 582новые вакансии за сутки·92 562вакансии открыты сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании7 220
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 402 кандидата открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python17 105
  • Облачные технологии14 068
  • QA вакансии3 460
  • Backend вакансии2 098
  • Инженер данных1 796
  • Продакт-менеджер1 248

Разработка

  • Android1 866
  • iOS1 699
  • Fullstack вакансии979
  • AI вакансии951
  • Frontend вакансии742
  • Mobile вакансии44

По стеку

  • Go8 651
  • Java6 544
  • Node.js2 018
  • .NET1 719
  • Kotlin1 623
  • Rust1 453
  • C#709
  • PHP683
  • C++571

DevOps и инфраструктура

  • Kubernetes7 761
  • DevOps вакансии6 057
  • Linux-инфраструктура5 492
  • Terraform / IaC4 259
  • CI/CD3 240
  • Мониторинг и Observability1 782
  • SRE565
  • Кибербезопасность450

Аналитика и данные

  • Data Scientist1 127
  • Бизнес-аналитик925
  • Аналитик данных845
  • Системный аналитик154

Другие направления

  • Проджект-менеджер611
  • UI/UX дизайн145
  • Ручное тестирование14

По регионам

  • Вакансии в США43 686
  • Вакансии в Европе23 668
  • Вакансии в Канаде4 413
  • Работа в России3 909

По формату

  • Удалённые вакансии73 889
  • Релокация в США43 686
  • Гибридная работа12 392
  • Офисная работа7 088

По уровню

  • Senior вакансии42 236
  • Middle вакансии20 545
  • Junior вакансии6 653

Сейчас нанимают

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab138 вакансий
  • Celonis39 вакансий
  • Spotify36 вакансий
  • Adyen29 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме PydanticВсе вопросы
PydanticMiddleКодинг

Как использовать model_config для включения режимов populate_by_name, strict или from_attributes?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

populate_by_name=True принимает и alias, и имя поля; strict=True запрещает coercion типов; from_attributes=True позволяет создавать модели из ORM-объектов. Все три передаются через ConfigDict в атрибут model_config.

populate_by_name

По умолчанию, если поле имеет alias, оно принимает только alias. Опция populate_by_name=True разрешает использовать и имя поля, и alias одновременно.

from pydantic import BaseModel, ConfigDict, Field

class UserAPI(BaseModel):
    model_config = ConfigDict(populate_by_name=True)

    user_id: int = Field(alias="userId")
    full_name: str = Field(alias="fullName")

# Через alias (как приходит из API)
u1 = UserAPI.model_validate({"userId": 1, "fullName": "Alice"})
print(u1.user_id)  # 1

# Через snake_case имя (удобно в тестах и внутреннем коде)
u2 = UserAPI.model_validate({"user_id": 2, "full_name": "Bob"})
print(u2.full_name)  # Bob

# Без populate_by_name строка выше бросила бы ValidationError

Типичный кейс: модель получает данные из внешнего JSON-API с camelCase, но внутри кода хочется snake_case.

Ключевые опции model_config в Pydantic v2

Поведение модели настраивается через ConfigDict, который передаётся в атрибут класса model_config. Три наиболее практически важные опции — populate_by_name, strict и from_attributes.

strict

По умолчанию Pydantic делает мягкое приведение типов (lax mode): строка "42" принимается для поля int. strict=True запрещает любой coercion — типы должны совпадать точно.

from pydantic import BaseModel, ConfigDict, ValidationError

class StrictOrder(BaseModel):
    model_config = ConfigDict(strict=True)

    quantity: int
    price: float
    active: bool

# OK — точные типы
order = StrictOrder(quantity=5, price=9.99, active=True)

# Падает — строка не принимается для int
try:
    StrictOrder(quantity="5", price=9.99, active=True)
except ValidationError as e:
    print(e.errors()[0]["type"])  # int_type

# Падает — int не принимается для bool
try:
    StrictOrder(quantity=5, price=9.99, active=1)
except ValidationError as e:
    print(e.errors()[0]["type"])  # bool_type

Strict mode полезен для внутренних API и моделей данных, где типы известны заранее, — он делает ошибки явными на раннем этапе.

from_attributes

Разрешает создавать модель из объектов с атрибутами (ORM-объекты, dataclasses, NamedTuple) вместо словарей. Аналог orm_mode = True из Pydantic v1.

from pydantic import BaseModel, ConfigDict
from sqlalchemy import Column, Integer, String
from sqlalchemy.orm import DeclarativeBase

class Base(DeclarativeBase):
    pass

class UserORM(Base):
    __tablename__ = "users"
    id = Column(Integer, primary_key=True)
    name = Column(String)
    email = Column(String)

class UserSchema(BaseModel):
    model_config = ConfigDict(from_attributes=True)

    id: int
    name: str
    email: str

# Симулируем ORM-объект
class FakeORM:
    id = 1
    name = "Alice"
    email = "alice@example.com"

user = UserSchema.model_validate(FakeORM())
print(user.name)  # Alice
print(user.model_dump())  # {'id': 1, 'name': 'Alice', 'email': 'alice@example.com'}

Комбинирование опций

from pydantic import BaseModel, ConfigDict, Field

class RobustModel(BaseModel):
    model_config = ConfigDict(
        from_attributes=True,    # принимает ORM-объекты
        populate_by_name=True,   # принимает и alias, и имя поля
        strict=False,            # мягкая типизация (дефолт)
        validate_assignment=True, # валидирует при присвоении атрибутов
    )

    user_id: int = Field(alias="userId")
    status: str

Подводные камни

  • strict=True на уровне модели влияет на все поля сразу. Если нужен strict только для одного поля, используйте Annotated[int, Strict()] на уровне поля.
  • populate_by_name=True не меняет поведение сериализации — model_dump(by_alias=True) по-прежнему нужно вызывать явно, иначе в выводе будут snake_case имена.
  • from_attributes=True читает атрибуты через getattr(), а не через __dict__ — это важно для ленивых SQLAlchemy-атрибутов, которые могут вызвать DetachedInstanceError при доступе вне сессии.
  • Если задан alias_generator (например, alias_generator=str.lower) и populate_by_name=False, можно случайно сломать инициализацию по ключевым аргументам.
  • model_config не наследуется автоматически так, как можно ожидать: дочерний класс наследует конфиг родителя, но если переопределить хоть одну опцию через новый ConfigDict(), остальные сбрасываются в дефолт — нужно явно указывать все нужные опции.
  • Опция validate_assignment=True делает модель «живой» — присвоение model.field = value валидируется, но это добавляет overhead при частых мутациях.

Типичные ошибки

  • Описывать model config options только как термин и не показывать механизм на минимальном примере.
  • Игнорировать ошибки, пустые данные, конкурентный доступ или границы транзакции.
  • Не связывать поведение с официальным контрактом Pydantic и реальной эксплуатацией.

Что проверяет интервьюер

  • Объясняет model config options через последовательность действий, а не через набор ключевых слов.
  • Приводит короткий кодовый пример или production-сценарий с ожидаемым поведением.
  • Называет хотя бы один риск: производительность, безопасность, транзакции, память или сопровождение.

Как вы знаете этот вопрос?

Проверить себя по теме Pydantic →

Источники

  • https://docs.pydantic.dev/latest/api/config/

Связанные темы

Pydanticimplementationpydantictechnical-reasoning

Частые вопросы на собеседовании

  • В чём разница между Pydantic v1 и Pydantic v2 — каковы основные breaking changes?
  • Что такое Pydantic и какую проблему он решает в Python-приложениях?
  • Как Pydantic использует аннотации типов Python для валидации данных?
  • Как Pydantic обрабатывает приведение типов (type coercion) — в чём разница между strict mode и lax mode?