JSONField сохраняется как строка django
У меня есть модель Django, как показано ниже:
from jsonfield import JSONField
class SCUser(User):
address = JSONField(blank=True,null=True)
Когда я сохраняю json по этому адресу, он сохраняется как строка. Вот фрагмент кода:
appuser.address = {"state":""}
appuser.save()
Теперь, если я пытаюсь получить appuser.address, это дает мне
>>>appuser.address
>>>u'{"state":""}'
>>>appuser.save()
>>>appuser.address
>>>u'"{\\"state\\":\\"\\"}"'
И это становится рекурсивным. Что мне здесь не хватает?
Редактировать: AppUser наследуется от модели SCUser.
1 ответ
Я столкнулся с этой проблемой, когда использую ключ, отличный от Autofield, в качестве первичного ключа модели, и обнаружил некоторые проблемы, которые все еще открыты в github, связанные с этой проблемой.
https://github.com/dmkoch/django-jsonfield/issues/92
https://github.com/dmkoch/django-jsonfield/issues/101
Я решил эту проблему, определив свойство pk в модели. Я не знаю, есть ли побочные эффекты при использовании этого раствора.
class SCUser(User):
....
@property
def pk(self):
return self.id # your pk
Пожалуйста, попробуй:
appuser.address = {"state":""}
appuser.save()
appuser.get_data_json()