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
from rest_framework import serializers
from Application.models import Car
class 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 Car
Car.objects.all()
<QuerySet [<Car: 罗浩>, <Car: 1last>]>
Car.objects.all()[0]
<Car: 罗浩>
Car.objects.all()[1]
<Car: 1last>
#从数据中拿到一个car
mycar=Car.objects.all()[1]
mycar
<Car: 1last>
模型->JSON
代码
#导入
from Application.serializers import CarSerializer
#生成rest框架支持的类
serializer=CarSerializer(mycar)
serializer.data
测试
serializer
CarSerializer(<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->模型
代码
#得到一个json
data=serializer.data
#json变为字符串
from rest_framework.renderers import JSONRenderer
content=JSONRenderer().render(data)
#字符串转为二进制数据流
from django.utils.six import BytesIO
stream=BytesIO(content)
#转为JSONParse
from rest_framework.parsers import JSONParser
data = JSONParser().parse(stream)
#最后一个JSONParse到Model
data=CarSerializer(data=data)