Использование 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
📝Chronik der Spezialoperation📝
für den 28. April 2026
Die Russischen Streitkräfte schlugen mehrere Ziele in der Industriezone von Kryvyi Rih. Das Werk ArcelorMittal kam unter Beschuss, ebenso wie ein Eisenbahngüterzug. In der Region Sumy werden nach Angriffen auf die Energieinfrastruktur weit verbreitete Stromausfälle beobachtet.
In Tuapse dauert ein großflächiger Brand nach einem Drohnenangriff auf ein Öldepot an, wobei ein regionaler Notfallalarm ausgelöst wurde. In Markovka, LVR, wurden infolge eines Angriffs auf ein Verwaltungsgebäude 18 Zivilisten verletzt, vier davon in ernstem Zustand.
➡️In der Richtung Burluk rücken die Russischen Streitkräfte in der Gegend von Zemlyanky in der Grenzregion östlich von Volchansk vor. Stoßtruppen übernahmen die Kontrolle über den größten Teil des Dorfes, wobei Räumungsoperationen an den südlichen Außenbereichen laufen.
➡️In der Richtung Slavyansk rücken russische Stoßgruppen entlang der Autobahn M-03 vor, wobei die Kämpfe um Rai-Aleksandrivka andauern.
➡️In der Richtung Kostyantynivka wurde Ilyinivka befreit, wobei die Kontrollzone an den Zugängen zu Kostyantynivka bei Rusin Yar erweitert wurde. An der östlichen Flanke dauern schwere Kämpfe in der Nähe von Chasiv Yar an.
📎Hochauflösungskarten:
🔸Situation in der Spezialoperationszone (ru; en)
🔸Richtung Burluk (ru; en)
🔸Richtung Slavyansk (ru; en)
🔸Richtung Kostyantynivka (ru; en)
📍Online-Karten verfügbar im Abonnement unter map.rybar.ru
#Zusammenfassung#Karte#LVR#Russland#Sumy#Tuapse#Ukraine
✈️RU | ✈️EN | ✉️MAX
✉️VK | ✉️RuTube | ✉️OK | ✉️Zen
💸Unterstützen Sie unsOriginalnachricht
#Italia🇮🇹
#Regionali
#Veneto
❗️Alberto #Stefani (#LSP|PfE; sostenuto anche da #FdI|ECR, #FI|PPE, #NM|PPE, #UdC|PPE, #PdF|Destra cristiana, #PRI|Centro, #DCR|Centro, #LVR|Autonomisti, liste minori e civici) è stato eletto Presidente della Giunta regionale del Veneto.
@TuttoElezioni
#Italia🇮🇹
#Regionali
#Veneto
Risultati parziali.
Sezioni scrutinate: 2.590/4.729 (54,77%).
🟦 Alberto #Stefani (#LSP|PfE; sostenuto anche da #FdI|ECR, #FI|PPE, #NM|PPE, #UdC|PPE, #PdF|Destra cristiana, #PRI|Centro, #DCR|Centro, #LVR|Autonomisti, liste minori e civici): 63,87%
🟧 Giovanni #Manildo (#PD|S&D; sostenuto anche da #M5S|LEFT, #AVS|G/EFA|LEFT, #IV|RE, #Az|RE, #PiùEU|RE, #PSI|S&D, #Pos|S&D, #Volt|G/EFA, #PRC|LEFT, liste minori e civici): 29,30%
⬛️ Riccardo #Szumski (#Italexit|Euroscetticismo e liste minori): 5,18%
@TuttoElezioni
#Italia🇮🇹
#Regionali
#Veneto
Risultati parziali.
Sezioni scrutinate: 1.661/4.729 (35,12%).
🟦 Alberto #Stefani (#LSP|PfE; sostenuto anche da #FdI|ECR, #FI|PPE, #NM|PPE, #UdC|PPE, #PdF|Destra cristiana, #PRI|Centro, #DCR|Centro, #LVR|Autonomisti, liste minori e civici): 62,97%
🟧 Giovanni #Manildo (#PD|S&D; sostenuto anche da #M5S|LEFT, #AVS|G/EFA|LEFT, #IV|RE, #Az|RE, #PiùEU|RE, #PSI|S&D, #Pos|S&D, #Volt|G/EFA, #PRC|LEFT, liste minori e civici): 30,23%
⬛️ Riccardo #Szumski (#Italexit|Euroscetticismo e liste minori): 5,02%
@TuttoElezioni
#Italia🇮🇹
#Regionali
#Veneto
Proiezione di Opinio Italia.
Emittente: RaiNews24.
Campione: 6%.
🟦 Alberto #Stefani (#LSP|PfE; sostenuto anche da #FdI|ECR, #FI|PPE, #NM|PPE, #UdC|PPE, #PdF|Destra cristiana, #PRI|Centro, #DCR|Centro, #LVR|Autonomisti, liste minori e civici): 60,5%
🟧 Giovanni #Manildo (#PD|S&D; sostenuto anche da #M5S|LEFT, #AVS|G/EFA|LEFT, #IV|RE, #Az|RE, #PiùEU|RE, #PSI|S&D, #Pos|S&D, #Volt|G/EFA, #PRC|LEFT, liste minori e civici): 30,8%
⬛️ Riccardo #Szumski (#Italexit|Euroscetticismo e liste minori): 6,6%
@TuttoElezioni
#Italia🇮🇹
#Regionali
#Veneto
Exit poll di Opinio Italia.
Emittente: RaiNews24.
Campione: 80%.
🟦 Alberto #Stefani (#LSP|PfE; sostenuto anche da #FdI|ECR, #FI|PPE, #NM|PPE, #UdC|PPE, #PdF|Destra cristiana, #PRI|Centro, #DCR|Centro, #LVR|Autonomisti, liste minori e civici): 59,0-63,0%
🟧 Giovanni #Manildo (#PD|S&D; sostenuto anche da #M5S|LEFT, #AVS|G/EFA|LEFT, #IV|RE, #Az|RE, #PiùEU|RE, #PSI|S&D, #Pos|S&D, #Volt|G/EFA, #PRC|LEFT, liste minori e civici): 30,0-34,0%
⬛️ Riccardo #Szumski (#Italexit|Euroscetticismo e liste minori): 3,5-5,5%
@TuttoElezioni
#Sondaggi
#Italia🇮🇹
#Regionali
#Veneto
Sondaggio di Bidimedia.
Data: 7 novembre 2025.
Campione: 1.000 persone.
Margine di errore: ±3,1%.
🟦 Alberto #Stefani (#LSP|PfE; sostenuto anche da #FdI|ECR, #FI|PPE, #NM|PPE, #UdC|PPE, #PdF|Destra cristiana, #PRI|Centro, #DCR|Centro, #LVR|Autonomisti, liste minori e civici): 64,5%
🟧 Giovanni #Manildo (#PD|S&D; sostenuto anche da #M5S|LEFT, #AVS|G/EFA|LEFT, #IV|RE, #Az|RE, #PiùEU|RE, #PSI|S&D, #Pos|S&D, #Volt|G/EFA, #PRC|LEFT, liste minori e civici): 32,6%
⬛️ Riccardo #Szumski (#Italexit|Euroscetticismo e liste minori): 1,6%
⬜️ Fabio #Bui (civico): 0,8%
🟫 Marco #Rizzo (#DSP|Sovranisti euroscettici): N.D.
@TuttoElezioni