2016-11-16 12 views
0

を引き起こす私のpython 2.7.11DRF:モデル内のTextFieldとシリアライザでJSONFieldは、文字列化

Aを使用していますが、モデルがのは、JSONの値を格納することになっていますTextFieldを持つGameを言わせています。 TextFieldが選択されたのは、データベースがpostgres JSONbをネイティブにサポートしていないhibernate ORMと共有されているためです。したがって、私が持っている:

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を介して?シリアライザで、その後

import json 

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

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

そして:

答えて

0

あなたのような何かを試すことができ

class GameSerializer(serializers.ModelSerializer): 
    settings = serializers.JSONField(source="settings_json") 
関連する問題