Возврат пользовательских данных для поля в django ORM

Я хочу запросить объект, имеющий поле Char, которое я должен возвращать с правильными типами данных для соответствующих значений при каждом вызове orm для объекта.

Например,

class A(models.Model):
    tweet = models.CharField(max_length=120, default=dict)

Так что,

>>> a = A.objects.first()
>>> a.tweet
>>> {'x': '1'}


Вот что должно возвращаться вместо этого:

{'x': 1}

По какой-то причине я не хочу сохранять поле так, как я ожидаю, что оно будет запрашиваться.

Заранее спасибо

Вы можете создать пользовательское поле формы и использовать его для изменения данных колонки перед возвратом.

class CustomCharField(models.CharField):

    def to_python(self, value):
        if isinstance(value, str):
            value = json.loads(value)
            if isinstance(value, dict):
                for key, val in value.items():
                    if isinstance(value, str) and value.isdigit():
                        value[key] = int(value)

        return value

В функции to_python вы можете изменить значение перед возвратом из Django orm.

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