Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django REST框架:从字符串创建JSON片段_Django_Rest_Serialization_Django Rest Framework - Fatal编程技术网

Django REST框架:从字符串创建JSON片段

Django REST框架:从字符串创建JSON片段,django,rest,serialization,django-rest-framework,Django,Rest,Serialization,Django Rest Framework,我想用JSON将JSON片段存储在我的模型的TextField中: class A(models.Model): name = models.CharField(max_length=200) people = models.TextField() 我有一个序列化程序类: class ASerializer(serializers.HyperlinkedModelSerializer): class Meta: model = A fie

我想用JSON将JSON片段存储在我的模型的TextField中:

class A(models.Model):
    name = models.CharField(max_length=200)
    people = models.TextField()
我有一个序列化程序类:

class ASerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = A
        fields = ('name', 'people')
我怎么能告诉Django REST框架像对待JSON一样对待人字符串,而不是像对待字符串一样对待人呢。例如,当人们是[{“姓名”:“A”,“姓氏”:“B”}]时,我希望在Django REST框架生成的JSON中有

"people" : [ {"name":"A", "surname":"B"}]
而不是

"people" : "[ {\"name\":\"A\", \"surname\":\"B\"}]"

编辑:我更改了一个rializer类,并使用了DjangoJSonfield中的JSONField,一切正常。下面的新代码,transform_people方法用于序列化并验证_people是否为反序列化:

class ASerializer(serializers.ModelSerializer):
    def transform_people(self, obj, value):
        if obj is None:
            return obj
        else:
            return obj.people

    def validate_people(self, attrs, source):
        return attrs

    class Meta:
        model = A

将响应转换为json对象

import json
## In this case lets say
response = [{"name":"A", "surname":"B"}]
data = json.dumps(response)
print data
你可以用

类序列化程序(序列化程序.HyperlinkedModelSerializer):
people=serializers.JSONField()
类元:
型号=A

fields=('name','people')
我回答了这个问题,谢谢!我编辑了我的答案以显示解决方案
class ASerializer(serializers.HyperlinkedModelSerializer):
    people = serializers.JSONField()

    class Meta:
        model = A
        fields = ('name', 'people')