Использование 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
Друзья, не забывайте про наш крутой бьюти-бар от NL International. Здесь мы заряжаемся красотой и пробуем вкуснейшие новинки от NL. А самые активные гости бара получат бесплатные welcome-наборы с вкусняшками для красоты и здоровья.
Итак, как получить подарок:
- идем в бьюти-бар NL
- делаем фото с продуктами или нашими красавицами Мисс Шерегеш
- выкладываем пост или сториз в свои соцсети, отмечаем аккаунт @nl_int и ставим #nl_грелкафест
- показываем фото с отметками бармену и получаем подарок!
Go зарядиться красотой и получить полезные подарки от NL International!
@nl_news
#грелкафест2024#nl
Друзья, не забывайте про наш крутой бьюти-бар от NL International. Здесь мы заряжаемся красотой и пробуем вкуснейшие новинки от NL. А самые активные гости бара получат бесплатные welcome-наборы с вкусняшками для красоты и здоровья.
Итак, как получить подарок:
- идем в бьюти-бар NL
- делаем фото с продуктами или нашими красавицами Мисс Шерегеш
- выкладываем пост или сториз в свои соцсети, отмечаем аккаунт @nl_int и ставим #nl_грелкафест
- показываем фото с отметками бармену и получаем подарок!
Go зарядиться красотой и получить полезные подарки от NL International!
@nl_news
#грелкафест2024#nl
Громкие фанфары, восхищенные взгляды, резкий рост ширины улыбок!
Встречайте участниц Мисс Шерегеш-2024!
Приветствуем и начинаем пристально, но очень тактично, следить за великолепной десяткой самых жизнерадостных высокогорных красавиц!
1. Березовская Христина
2. Зимина Алина
3. Кузьмина Жанна
4. Лобаненко Наталья
5. Логинова Анна
6. Малахова Яна
7. Новикова Ксения
8. Старченко Ульяна
9. Сулимова Анна
10. Харыбина Анна
Не пропусти самое красивое, что могло случится с нами в горах) Поддерживай со всей силы любимую участницу!
Чтобы увидеть финал самого красивого среди горнолыжных и самого горнолыжного среди красивых конкурсов, регистрируйся и становись участником Grelk’и на https://grelkafest.com
Быстрее всех узнавай новости фестиваля на наших страницах)
Телеграм https://t.me/GrelkaFest_News
ВКонтакте https://vk.com/grelkafest
И вступай в чат веселых райдеров https://t.me/+FjmJaUlJIpM4OThi
#грелкафест2024#миссшерегеш2024#nl
Мисс Шерегеш начнется уже вот-вот… Осталось только определить еще одну финалистку!
Начинаем онлайн-голосование, где вы, опытные ценители высокогорной красоты и обаяния, определите, кто из 10 претенденток пройдет в финал Мисс Шерегеш-2024 и станет десятой финалисткой.
Голосование продлится до 20:00
4 апреля 2024 года. Успевай!
А чтобы увидеть этот парад высокогорной красоты на яву, регистрируйся и становись участником Grelk’и на https://grelkafest.com!
Быстрее всех узнавай новости фестиваля на наших страницах)
Телеграм https://t.me/GrelkaFest_News
ВКонтакте https://vk.com/grelkafest
И вступай в чат веселых райдеров https://t.me/+FjmJaUlJIpM4OThi
#грелкафест2024#миссшерегеш2024#nl