【问题标题】:DRF: JSONField in serializers with TextField in models cause stringificationDRF:序列化程序中的 JSONField 与模型中的 TextField 导致字符串化
【发布时间】:2017-03-30 11:35:46
【问题描述】:

我正在使用 python 2.7.11

假设有一个模型Game,它有一个应该存储 json 值的 TextField。选择 TextField 是因为数据库与本地不支持 postgres JSONb 的休眠 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 字符串并通过 API 将它们作为 json 对象返回?

【问题讨论】:

    标签: django django-rest-framework python-2.x python-unicode


    【解决方案1】:

    你可以试试这样的:

    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")
    

    【讨论】:

    • 为我工作:)
    猜你喜欢
    • 2018-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-20
    • 2018-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多