
drf-更新四大接口-单改整体-单改局部-群改整体-群改局部-04
????????
发布日期:2021-05-14 13:55:49
浏览次数:23
分类:精选文章
本文共 3362 字,大约阅读时间需要 11 分钟。
???????????????
???????
????
class BaseModel(models.Model): is_delete = models.BooleanField(default=False) class Meta: abstract = True
class Car(BaseModel): name = models.CharField(max_length=64) @property def my_name(self): return '???????'
????
class CarModelSerializer(ModelSerializer): class Meta: model = models.Car fields = ('name', ) extra_kwargs = { 'name': { 'write_only|read_only': True } }
??????????
????
put
?? V2BookModelSerializer( instance=???????, data=???????, partial=False)
2. **?????**???`patch`?? ```python V2BookModelSerializer( instance=???????, data=???????, partial=True )
???????????
???????
class V2Book(APIView): def put(self, request, *args, **kwargs): request_data = request.data pk = kwargs.get('pk') old_book_obj = models.Book.objects.filter(pk=pk).first() book_ser = serializers.V2BookModelSerializer( instance=old_book_obj, data=request_data, partial=False ) book_ser.is_valid(raise_exception=True) book_obj = book_ser.save() return Response({ 'status': 0, 'msg': 'ok', 'results': serializers.V2BookModelSerializer(book_obj).data })
??????
ListSerializer ??
class V2BookListSerializer(ListSerializer): def update(self, instance, validated_data): for index, obj in enumerate(instance): self.child.update(obj, validated_data[index]) return instance
????????
class V2BookModelSerializer(ModelSerializer): class Meta: list_serializer_class = V2BookListSerializer
???????
?????
class V2Book(APIView): def patch(self, request, *args, **kwargs): request_data = request.data pk = kwargs.get('pk') if pk and isinstance(request_data, dict): pks = [pk] request_data = [request_data] elif not pk and isinstance(request_data, list): pks = [] for dic in request_data: pk = dic.pop('pk', None) if pk: pks.append(pk) else: return Response({ 'status': 1, 'msg': '????' }) if not pks: return Response({ 'status': 1, 'msg': '????' }) objs = [] new_request_data = [] for index, pk in enumerate(pks): try: obj = models.Book.objects.get(pk=pk) objs.append(obj) new_request_data.append(request_data[index]) except: continue book_ser = serializers.V2BookModelSerializer( instance=objs, data=new_request_data, partial=True, many=True ) book_ser.is_valid(raise_exception=True) book_objs = book_ser.save() return Response({ 'status': 0, 'msg': 'ok', 'results': serializers.V2BookModelSerializer(book_objs, many=True).data })
??
????????????????????????????????????????????????????????????????
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年05月03日 18时21分21秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Android使用Font Awesome
2019-03-11
主线程中Looper的轮询死循环为何没有阻塞主线程?
2019-03-11
Gradle实战四:Jenkins持续集成
2019-03-11
使用RestTemplate,显示请求信息,响应信息
2019-03-11
wgcloud运维监控系统错误:防篡改校验错误次数大于10次,不再上报数据
2019-03-11
为什么WGCLOUD安装完后,启动服务端打不开网页
2019-03-11
wgcloud网络监控出现负值
2019-03-11
ios 官方sample
2019-03-11
iOS 开发官方文档链接收集
2019-03-11
网易云面试(Android岗)之旅,差点被这些基础题绊了跟头。
2019-03-11
Android音视频开发之——音频非压缩编码和压缩编码
2019-03-11
linux学习笔记(四)基本用户管理与帮助命令
2019-03-11
小程序:防止父方法被子方法冒泡,使用catchtap
2019-03-11
vue报错 created hook错误
2019-03-11
单选框点击文字也能选中
2019-03-11
此主机支持Intel VT-x,但Intel VT-x 处于禁用状态。
2019-03-11
06-局部变量和全局变量
2019-03-11
12-面向对象1
2019-03-11
python基础总结 异常处理
2019-03-11