class Books(View):
def get(self,request):
# 1、查询所有图书对象
books = BookInfo.objects.all()
ser= BookSerialzier(books,many=True)
return JsonResponse(ser.data, safe=False)
def post(self, request):
# 1、获取前端数据
data = request.body.decode()
data_dict = json.loads(data)
# 2、验证数据
ser= BookSerialzier(data=data_dict)
ser.is_valid() # 验证方法
# 3、保存数据
ser.save()
# 4、返回结果
return JsonResponse(ser.data)
class HeroInfoSerialzier(serializers.Serializer):
# 英雄序列化器
hname = serializers.CharField()
hcomment = serializers.CharField()
# hbook=serializers.PrimaryKeyRelatedField()
hbook = serializers.StringRelatedField()
# 自定义序列化器
class BookSerialzier(serializers.Serializer):
# 序列化返回字段
btitle = serializers.CharField(max_length=20, min_length=5, write_only=True)
bread = serializers.IntegerField(max_value=100, min_value=5)
bpub_date = serializers.DateField()
bcomment = serializers.IntegerField(default=10)
# 返回关联的英雄id PrimaryKeyRelatedField
# heroinfo_set = serializers.PrimaryKeyRelatedField(read_only=True,many=True)
# 返回关联英雄模型类的str方法值
# heroinfo_set = serializers.StringRelatedField(read_only=True, many=True)
#第3种方式 通过引用上面的 HeroInfoSerialzier类
heroinfo_set = HeroInfoSerialzier(many=True)
drf嵌套序列化返回
发表评论
744 views