Использование Pydantic сегодня стало нормой, и это правильно. Но иногда на ревью вижу, что используют его не всегда корректно.
Например, метод BaseModel.model_dump() по умолчанию не преобразует стандартные типы, такие как datetime, UUID или Decimal, в простой сериализуемый для JSON вид. Тогда пишут кастмоный сериализатор для этих типов чтобы функция json.dump() не падала с ошибкой.
import uuid
from datetime import datetime
from decimal import Decimal
from uuid import UUID
from pydantic import BaseModel
class MyModel(BaseModel):
id: UUID
date: datetime
value: Decimal
obj = MyModel(
id=uuid.uuid4(),
date=datetime.now(),
value='1.23'
)
print(obj.model_dump())
# не подходит для json.dump
# {
# 'id': UUID('4f8c1bc4-25fd-40cd-9dbe-2c73639b0dc1'),
# 'date': datetime.datetime(2025, 12, 12, 12, 12, 12, 111111),
# 'value': Decimal('1.23')
# }
# добавляем свой кастомный сериализатор
json.dumps(obj.model_dump(), cls=MySerializer)
# {
# 'id': '4f8c1bc4-25fd-40cd-9dbe-2c73639b0dc1',
# 'date': '2025-12-12T12:12:12.111111',
# 'value': '1.23'
# }
В данном случае класс MySerializer обрабатывает datetime, UUID и Decimal. Например так:
class MySerializer(json.JSONEncoder):
def default(self, o):
if isinstance(o, Decimal):
return str(o)
elif isinstance(o, datetime):
return o.isoformat()
elif isinstance(o, UUID):
return str(o)
return super().default(o)
Специально для тех, кто всё еще так делает - в этом нет необходимости!
Pydantic может это сделать сам, просто нужно добавить параметр mode="json".
json.dumps(obj.model_dump(mode="json"))
# {
# 'id': '4f8c1bc4-25fd-40cd-9dbe-2c73639b0dc1',
# 'date': '2012-12-12T12:12:12.111111',
# 'value': '1.23'
# }
#pydantic#libs
⚡️ [🇷🇺] #СВО/#ГА Восток: За протекла 24 часа, ВСУ су изгубиле до 2 чете живе силе. Уништене: 2 самохотке, 5 возила, 2 сателитска терминала и преко 20 пунктова за лансирање БпЛ.
🇷🇸https://t.me/borbeni_efektivi
В конце марта лётная школа пригласила меня в качестве специального гостя на игру, посвященную авиации ✈️
Предлагаю и вам ответить на мой вопрос, только интернетом и ИИ пользоваться нельзя
❌
На многих самолётах есть такие приспособления. Как они называются и какую функцию выполняют?
Лёгкое небо | Розыгрыш
#aviation#ГА
Сегодня, 26 апреля, отмечается Всемирный день пилотов 👨✈️
Идея учреждения этого праздника впервые была выдвинута турецкой авиакомпанией в 2014 году, выбрав для него дату 26 апреля.
Инициативу поддержала Международная ассоциация пилотов. Дата была выбрана в честь первого полета турецкого лайнера, состоявшегося в 1912 году ✈️
Профессия пилота – одна из тех, где недопустимы ошибки, поскольку пилот отвечает за безопасность полета и сохранение здоровья и жизни пассажиров. Он обязан досконально разбираться в принципах работы авиалайнера и методах его управления. Уровень профессиональных знаний и качество специальной подготовки напрямую влияют на комфорт и безопасность перелета.
📚В своей деятельности современный пилот использует широкий спектр инструментов и знаний в таких областях, как Crew Resource Management, авиационная метеорология, планирование и организация рабочего времени, Руководство по производству полетов (РПП) и другие.
В этот день, мы поздравляем пилотов по всем миру, включая тех, кто уже не сможет подняться в небо и тех, у кого всё только начинается ✈️
Попутного на эшелоне,
Мягких посадок
Лёгкое небо
#aviation#ГА#news
Самолёт загорелся в аэропорту Орландо в США. Огонь появился из одной из турбин.
Airbus A330 должен был лететь в Атланту. На борту было 282 пассажира, их эвакуировали. Информации о пострадавших не поступало.
Лёгкое небо |Розыгрыш
#aviation#ГА#news
Аэрофлот организует традиционную акцию для ветеранов к 80-летию Победы 🇷🇺
Аэрофлот запускает ежегодную акцию в честь 80-летия Победы в Великой Отечественной войне. В этом году бесплатные авиабилеты для ветеранов доступны не только на рейсах Аэрофлота и России, но и на рейсах лоукостера «Победа».
Билеты можно оформить с 25 апреля по 12 мая 2025 года в офисах продаж, представительствах Аэрофлота и через уполномоченные агентства. Вылет должен состояться в течение месяца с даты начала перевозки.
Лёгкое небо | Донат
#aviation#ГА#news
В честь праздника Великой победы🇷🇺
В период с 8 по 11 мая позиции Волгоград подход, вышка, руление будут переименованы в Сталинград-позиция
Поговаривают, что Петербург переименуют в Ленинград на тот же период времени
Лёгкое небо | Донат
#aviation#ГА#news
Росавиация обязала авиакомпании объединять багаж по просьбе пассажиров ✈️
Радуемся, ведь теперь для рейсов из Турции не придется переплачивать
Авиаперевозчики теперь должны объединять нормы бесплатного провоза багажа, если пассажиры, летящие вместе в один аэропорт, обращаются с такой просьбой. Об этом сообщила Росавиация в ответ на запрос главы комитета Госдумы по труду.
Если пассажиры заключили договоры авиаперевозки без включенного бесплатного багажа и оплатили его перевозку по установленным тарифам, перевозчик обязан по просьбе пассажиров объединить их багаж. При этом вес одного объединённого места не должен превышать 30 килограммов и принимается без дополнительной платы
- уточнили в ведомстве.
В случае превышения лимита в 30 кг за одно место, оплата производится по тарифам перевозчика. Эти правила распространяются на пассажиров, путешествующих совместно с общей целью на одном рейсе — будь то члены семьи, коллеги по командировке или иные группы.
Лёгкое небо | Донат
#aviation#ГА#news
Место, где время ощущается по-другому 🛫
Предлагаю пару вопросиков от лёгкого к сложному
1. Что за аэропорт
2. Как называется модель «толстячка»
3. По какой рд он рулит
4. Какой терминал находится слева
Лёгкое небо
#aviation#ГА#quiz