Django REST框架:从字符串创建JSON片段
我想用JSON将JSON片段存储在我的模型的TextField中: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
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')