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()
Другие вопросы по тегам