有个业务场景,数据库一个字段保存json数据,访问时返回该json。
这里使用modle字段为
name = models.CharField(max_length=120)
序列化器
name = serializers.JSONField()
但是DRF 框架的JSONField 字段 返回的是符串,并且保存到数据库中的数据的转成了python的数据格式,如字典的键是用单引号引出,但是json是用双引号引出,单引号引出的不是json格式,无论前端还是后端解释都是解释不出来的。所以在这里我们需要改写下JSONField 这个字段。
class Jsonserializer(serializers.JSONField):
default_error_messages = {
'invalid_json': _('无效的json数据格式')
}
def to_representation(self, value):
return json.loads(value)
def to_internal_value(self, data):
try:
json.loads(data)
except (TypeError, ValueError):
self.fail('invalid_json')
return data
这里我们 将前端传来的数据 校验后(json.loads(data)ÿ