Адаптируйте JSONField для автоматического преобразования в десятичное

У меня есть модель с полями типа:

django.contrib.postgres.fields.JSONField

и я хочу, чтобы это всегда десериализовалось с помощью:

json.loads(value, parse_int=decimal.Decimal, parse_float=decimal.Decimal)

при доступе к объектам:

MyModel.objects.get(..)

Однако мне было трудно настроить, потому что строка с json.loads который должен быть отменен выше одного в

psycopg2/_json.py

во внутреннем методе def _create_json_typecasters,

поэтому я ожидаю изменить тип поля моей модели, или, может быть, есть более простой способ рассказать Django, как подготовить мою модель?

1 ответ

Я нашел это:

psycopg2.extras.register_default_json(loads=my_loads_func)
psycopg2.extras.register_default_jsonb(loads=my_loads_func)  # for Postgres jsonb

или адаптировать его более изощренным способом: psycopg2 docs

Другие вопросы по тегам