Мы только что обновили до Django 1.9 и переместили вещи на свое встроенное JSONfield, которое мы используем для хранения словаря. Тем не менее, когда я пытаюсь читать данные из него, он возвращает unicode словаря.
My JSONfield определяется как:
class SmsInfo(models.Model):
[...]
json = JSONField(default=dict)
Данные записываются на него:
params = dict(request.POST)
SmsInfo.objects.create([...], json=params, [...])
Далее читается следующим образом:
incoming_smsses = SmsInfo.objects.select_related('game').defer('game__serialized').filter([...])
В какой момент:
print incoming_smsses[0].json.__class__
возвращает
<type 'unicode'>
вместо dict, которого я ожидаю, и мой код падает, потому что он не может искать какие-либо ключи.
Я застрял на этом совсем немного, и я не могу понять, почему это происходит не так. Я использовал literal_eval как обходное решение, которое теперь возвращает юникод в dict. Это работает сейчас, но я бы лучше занялся этим в источнике!
Почему мой словарь включен в Юникод здесь?