Использование 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
https://www.instagram.com/p/B5IMD8WJsuI/?igshid=o0ie40hj5j79
•
https://www.facebook.com/864416113651534/posts/2533997853360010/?substory_index=0
•
Sobat Sehat, Badan Kesehatan Dunia atau WHO menetapkan Pekan Kesadaran Antibiotik Sedunia atau World Antibiotic Awareness Week (WAAW) diperingati pada bulan November setiap tahunnya. Tahun ini jatuh pada tanggal 18 – 24 November.
.
Pekan ini bertujuan untuk meningkatkan kesadaran dan pemahaman masyarakat akan bahaya kekebalan (resistensi) terhadap antimikroba yang kini telah menjadi permasalahan serius di seluruh dunia, termasuk di Indonesia. Khususnya untuk antibiotik, yang seringkali digunakan secara tidak tepat dan bijak, sehingga memicu terjadinya resistensi bakteri.
.
Lantas apa bahaya resistensi antimikroba tersebut dan cara menghindarinya? Upaya apa yang dilakukan Kemenkes dalam meningkatkan kesadaran masyarakat akan pentingnya penggunaan antibiotik secara bijak? Kebijakan dan regulasi apa yang diambil Kemenkes untuk mengendalikan resistensi antimikroba khususnya antibiotik?
.
Simak #Sehatwicara mengenai "Gunakan Antibiotik dengan Bijak" bersama Dita Novianti, S.A, S.Si, MM, Apt (Direktur Pelayanan Kefarmasian, Kementerian Kesehatan RI).
.
Dengarkan pada Jumat, 22 November 2019, pukul 09.00-10.00 WIB hanya di aplikasi Radio Kesehatan (dapat diunduh di Play Store) atau di radiokesehatan.kemkes.go.id
.
Kamu bisa bertanya seputar topik melalui WA 0811 874 1919 atau mention Twitter/Instagram di @radiokesehatan.
.
@Kemenkes_RI@radiokesehatan
.
GeMa CerMat (Gerakan Masyarakat Cerdas Menggunakan Obat), Kemenkes RI
Fanpage FB: Cerdas Gunakan Obat
Twitter & IG: Cerdas Gunakan Obat
Telegram: t.me/cerdasgunakanobat, t.me/diskusiobat
.
#SRK#RadioKesehatan#talkshow#talkshowradio#infosehat#pekanpeduliantibiotiksedunia#pekanpeduliantibiotik#antibiotik#obat#bijakantibiotik#resistensiantibiotik
#antimicrobialresistance
#antibioticresistance
#worldantibioticawarenessweek2019
#WAAW2019
#gemacermat
#cerdasgunakanobat
# #KemenkesRI