2016-11-16 8 views
0

Я использую питон 2.7.11DRF: JSONField в сериализаторах с TextField в моделях вызывает stringification

А есть модель, скажу Game, что есть TextField, который, как предполагается хранить JSon значения. TextField был выбран из-за того, что база данных делится с Hibernate ORM, которая не поддерживает postgres JSONb изначально. Таким образом, у меня есть:

models.py:

@python_2_unicode_compatible 
class Game(models.Model): 
    settings = models.TextField(default='{}') 

serializers.py:

class GameSerializer(serializers.ModelSerializer): 
    settings = serializers.JSONField() 

Есть чистый способ справиться с этим, имея действительные строки JSON в базе данных и возвращает их в качестве json через API?

ответ

0

Вы можете попробовать что-то вроде:

import json 

@python_2_unicode_compatible 
class Game(models.Model): 
    settings = models.TextField(default='{}') 

    @property 
    def settings_json(self): 
     return json.loads(self.settings) 

А потом в сериализатором:

class GameSerializer(serializers.ModelSerializer): 
    settings = serializers.JSONField(source="settings_json")