Django Rest Framework:模型->JSON和JSON<-模型

来源:互联网 发布:竞价系统源码 编辑:程序博客网 时间:2024/05/03 21:45

Django Rest Framework:模型->JSON和JSON<-模型

情况

模型文件 models.py

class Car(models.Model):    first_name=models.CharField(max_length=40)    last_namr=models.CharField(max_length=40)    SHIRT_SIZES=(('S','小'),('M','中'),('L','大'))    shirt_size=models.CharField(max_length=8,choices=SHIRT_SIZES)    def __str__(self):        return self.first_name+self.last_namr

序列化文件 serializers.py

#导入rest框架序列化组件from rest_framework import serializers#导入模型文件类from Application.models import Carclass CarSerializer(serializers.Serializer):     #此处和模型文件一致    id = serializers.IntegerField(read_only=True)    first_name = serializers.CharField(required=False, allow_blank=True, max_length=100)    last_namr = serializers.CharField(max_length=40)    shirt_size = serializers.CharField(max_length=8)    def create(self, first_name):        """        Create and return a new `Snippet` instance, given the validated data.        """        return Car.objects.create(first_name=first_name,last_namr='test',shirt_size='L')    def update(self, instance, validated_data):        """        Update and return an existing `Snippet` instance, given the validated data.        """        instance.first_name = validated_data.get('first_name', instance.first_name)        instance.last_namr = validated_data.get('last_namr', instance.last_namr)        instance.shirt_size = validated_data.get('shirt_size', instance.shirt_size)        instance.save()        return instance

console中,从数据中拿到一个car

from Application.models import CarCar.objects.all()<QuerySet [<Car: 罗浩>, <Car: 1last>]>Car.objects.all()[0]<Car: 罗浩>Car.objects.all()[1]<Car: 1last>#从数据中拿到一个carmycar=Car.objects.all()[1]mycar<Car: 1last>

模型->JSON

代码

#导入from Application.serializers import CarSerializer#生成rest框架支持的类serializer=CarSerializer(mycar)serializer.data

测试

serializerCarSerializer(<Car: 1last>):    id = IntegerField(read_only=True)    first_name = CharField(allow_blank=True, max_length=100, required=False)    last_namr = CharField(max_length=40)    shirt_size = CharField(max_length=8)serializer.data{'id': 2, 'first_name': '1', 'shirt_size': '', 'last_namr': 'last'}

JSON->模型

代码

#得到一个jsondata=serializer.data#json变为字符串from rest_framework.renderers import JSONRenderercontent=JSONRenderer().render(data)#字符串转为二进制数据流from django.utils.six import BytesIOstream=BytesIO(content)#转为JSONParsefrom rest_framework.parsers import JSONParserdata = JSONParser().parse(stream)#最后一个JSONParse到Modeldata=CarSerializer(data=data)
0 0
原创粉丝点击