Расширение 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 также не работает, потому что не хочет анонимных функций.

Вернуться на верх