博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django drf 深入ModelSerializer
阅读量:5026 次
发布时间:2019-06-12

本文共 2171 字,大约阅读时间需要 7 分钟。

serializer用起来稍微麻烦,可以使用ModelSerializer,类似于django里的Form与ModelForm

1.定义ModelSerializer

from rest_framework import serializersfrom goods.models import Goods, GoodsCategory# class GoodsSerializer(serializers.Serializer):#     """#     Goods的serializer#     """#     name = serializers.CharField(required=True, max_length=100)#     chick_num = serializers.IntegerField(default=0)#     # goods_front_image = serializers.ImageField()#     # 外键需要写数据里的字段名,不能写类里的字段名,例如不能写category,需要些category_id,请求时也得时数据库里的名#     category_id = serializers.IntegerField()##     """#     创建#     """#     def create(self, validated_data):#         return Goods.objects.create(**validated_data)class CategorySerializer(serializers.ModelSerializer):    class Meta:        model = GoodsCategory        fields = '__all__'# 优点:解决上面的category_id外键问题class GoodsSerializer(serializers.ModelSerializer):    """    Goods的serializer    """    # 自定义,可以获取到外键数据    # read_only表示只用在获取数据    category_obj = CategorySerializer(source='category',read_only=True)    category_name = serializers.CharField(source='category.name',read_only=True)    class Meta:        model = Goods        # 外键写类里的名就可以        # fields = ('name','chick_num','category')        fields = '__all__'

2.View引用

from django.shortcuts import renderfrom rest_framework.views import APIViewfrom rest_framework.response import Responsefrom rest_framework import statusfrom rest_framework.parsers import JSONParserfrom goods.models import Goodsfrom goods.serializer import GoodsSerializerclass GoodsList(APIView):    def get(self, request):        goods = Goods.objects.all()[:10]        goods_json = GoodsSerializer(goods, many=True)        # print(type(goods_json))        # print(type(goods_json.data))        return Response(goods_json.data)    def post(self, request):        serializer = GoodsSerializer(data=request.data) # 不管是form或是json,post过来的数据,都可以通过request.data获取        if serializer.is_valid():            serializer.save()            return Response({
'data': 'ok'}, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

3.test

 

转载于:https://www.cnblogs.com/chenyishi/p/10654087.html

你可能感兴趣的文章
集合1
查看>>
js 原生 ajax
查看>>
关键词 virtual
查看>>
建造者模式(屌丝专用)
查看>>
UVALive 4730 Kingdom +段树和支票托收
查看>>
[APIO2010]特别行动队
查看>>
[SCOI2016]幸运数字
查看>>
SpringBoot 集成ehcache
查看>>
初步swift语言学习笔记2(可选类型?和隐式可选类型!)
查看>>
Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
查看>>
在Vs2012 中使用SQL Server 2012 Express LocalDB打开Sqlserver2012数据库
查看>>
在Macos下完美解决Adobe Dreamweaver CC 2018 汉化及操作方法
查看>>
【转】 Newtonsoft.Json高级用法
查看>>
CodeBlocks X64 SVN 编译版
查看>>
Excel催化剂开源第42波-与金融大数据TuShare对接实现零门槛零代码获取数据
查看>>
bug记录_signalr执行$.connnection.testhub结果为空
查看>>
【转】常用的latex宏包
查看>>
[TMS320C674x] 一、GPIO认识
查看>>
酷狗的皮肤文件存放在哪
查看>>
iOS RunLoop简介
查看>>