Расширение JSONField и пользовательская обработка значений по умолчанию
Я подклассифицирую JSONField
, чтобы немного по-другому обрабатывать значения по умолчанию. В частности, я передаю опции выбора (из django-choices
) и строю словарь на основе этого. Хотя это работает, я по понятным причинам получаю предупреждения о том, что мой новый default не является вызываемым. Как я могу это исправить?
class JSONChoicesField(JSONField):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
if self.default is NOT_PROVIDED:
self.default = self.get_default()
def _get_default(self):
default = super()._get_default()
if not default and self.choices:
default = dict()
for option_key, option_value in self.choices:
if option_key not in self.exclude:
default[option_key] = {
'display': option_value
'show': True
}
return default
Я пытался установить self.default = self.get_default
, но это вызывает проблемы при миграции, поскольку self
не существует в этом контексте. return lambda: default
также не работает, потому что не хочет анонимных функций.