Возврат пользовательских данных для поля в 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.