TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки

TGINSIGHT SIMILAR POSTS

Најди сличен содржај

Изворен канал @pythonotes · Post #397 · 12 ное.

Использование 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

Резултати

Пронајдени 2 слични објави

Пребарај: #uchun

当前筛选 #uchun清除筛选

Средство для уборки Mayeri All Care подходит для чистки всех водостойких поверхностей: ✅крашенные, лакированные поверхности ✅кафель ✅фаянс ✅линолеум ✅дерево Эффективно удаляет грязь, жир и неприятные запахи. Имеет приятный запах лаванды и жасмина. Если хотите получить действительно чистый эффект после уборки это средство именно для Вас. #mayeri#uzbekistan#средство#для#чистки#эко#продукт#uzum ----------------------- Mayeri All Care tozalagich barcha suv o'tkazmaydigan yuzalarni tozalash uchun to'g'ri keladi: ✅bo'yalgan, laklangan yuzalar ✅kafel ✅fayans ✅linoleum ✅daraxt Kirni, yog'ni va yoqimsiz hidlarni samarali tarzda yo'q qiladi.U lavanda va jasminning yoqimli hidiga ega. Tozalashdan keyin chindan ham toza effekt olishni istasangiz, bu mahsulot aynan siz uchun. #mayeri#uzbekistan#vosita#tozalash#uchun#eko#mahsulot#uzum

ЭКО кондиционер для белья Mayeri All care - это европейский продукт, созданный по новейшим технологиям! Бережно ухаживающий за всеми типами тканей: cмягчает ткани, снимает статическое электричество. Без красителей, ароматизаторов, фосфатов. Экологически безопасный продукт для Вас, Вашей семьи и нашей планеты. #ополаскиватель#mayeri#здоровье#польза#забота#для#белья Цена: 42 000 сум Арт: F351 ———————————- ECO mato yumshatuvchi Mayeri All Сare geli - bu eng yangi texnologiyalar yordamida yaratilgan Yevropa mahsulotidir! Barcha turdagi matolarga ehtiyotkorlik bilan g'amxo'rlik qilish: matolarni yumshatadi, statik elektrni olib tashlaydi. Bo'yoqlar, xushbo'y moddalar, fosfatlarsiz. Siz, oilangiz va sayyoramiz uchun ekologik toza mahsulot. #chayuvchi#mayeri#sogliq#foyda#himoya#kiyim#uchun Narx: 42 000 so'm Art: F351