Адаптируйте 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