django ORM 序列化 操作
ORM
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | '' ' filter示例使用 '' ' '' ' res = Xyuser.objects.filter( id =request.data.get( 'id' ), role_id__in=(2, 5)).update(is_active=0) instance = Xyuser.objects.filter( id =request.data.get( 'id' )).first() # 取修改后数据instance users = Xyuser.objects.all().filter(is_active=1, role_id__in=(2, 3, 4, 5)).order_by( '-create_time' ) total = users .count()user = Xyuer.lobjects.get( id =1) '' ' '' ' create使用示例 '' ' '' ' BookInfo.objects.create(name= "Python教程" ,readcount=0,commentcount=0) book = BookInfo(name= "Django教程" ,readcount=0,commentcount=0) # 创建BookInfo对象 book.save() # 使用save方法保存到数据库 '' ' '' ' update使用示例 '' ' '' ' User.objects.filter( id =1).update(role=2) User.objects.filter( id =1).update(**{ 'username' : 'nick' , 'role' : 3}) _role = Role.objects.get( id =2) User.objects.filter( id =1).update(role=_role) _role = Role.objects.get( id =1) User.objects.filter( id =1).update(**{ 'username' : 'nick' , 'role' : _role}) _t = User.objects.get( id =1) _t.__dict__.update(**{ 'username' : 'nick' , 'role_id' : 2}) _t.save() _t = User.objects.get( id =1) _t.usernam e = 'nick' _t.is_activ e =True _t.save() '' ' '' ' update_or_create使用示例 这个规则是: update_or_create(defaults=None, **kwargs) 执行规则: filter kwargs,create /update defaults 返回值为元组: (object, created),object为新建或者更新的对象,created为一个布尔值,表示是新建还是更新,True为新建 '' ' '' ' Model.objects.update_or_create(defaults ,**kwargs) Draw2DDevice.objects.update_or_create( defaults={ 'x' : 777, 'y' : 777, }, device_id=13, version_id=1) obj, create =models.CommodityInventory.objects.update_or_create( inventory_id=key[ "inventory_id" ], defaults={ "colour" : key[ "colour" ], # 规格名称 "bazaar" : key[ "bazaar" ], # 市场价 "price" : key[ "price" ], # 价格 "number" : key[ "number" ], # 库存 } ) defaults = dict() defaults[ 'name' ] = 'Jeff' defaults[ 'idcard' ] = '123456' defaults[ 'content' ] = 'hello world' User.objects.update_or_create(defaults=defaults, name= 'Jeff' , idcard= '123456' ) '' ' |
序列"""
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | GET /books/ 提供所有记录 POST /books/ 新增一条记录 GET /books/ <pk>/ 提供指定 id 的记录 PUT /books/ <pk>/ 修改指定 id 的记录 DELETE /books/ <pk>/ 删除指定 id 的记录 一、定义 APIView 序列化器 class BookInfoModelSerializer(serializers.ModelSerializer): class Meta: model = BookInfo fields = '__all__' # [] # exclude = # read_only_fields = [] 二、View 视图中使用 1、查询全部数据 (GET /books/ 提供所有记录) def get(self, request): qs = BookInfo.objects.all() # 展示数据用instance属性 serializer = BookInfoModelSerializer(instance=qs, many=True) print(serializer.data) return Response(serializer.data) 2、新增数据 (POST /books/ 新增一条记录) def post(self, request): # 获取前端传入的请求体数据 data = request.data # 创建序列化器进行反序列化 serializer = BookInfoModelSerializer(data=data) # 调用序列化器的is_valid方法进行校验 serializer.is_valid(raise_exception=True) # 调用序列化器的save方法进行执行create方法 serializer.save() # 响应 return Response(serializer.data, status=status.HTTP_201_CREATED) 3、根据pk查询一条数据 (GET /books/ <pk>/ 提供指定 id 的记录) def get(self, request, pk): # 查询pk指定的模型对象 try: book = BookInfo.objects.get( id =pk) except BookInfo.DoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND) # 创建序列化器进行序列化 serializer = BookInfoModelSerializer(instance=book) # 响应 return Response(serializer.data) 4、根据pk进行修改一条数据 (PUT /books/ <pk>/ 修改指定 id 的记录) def put(self, request, pk): # 查询pk所指定的模型对象 try: book = BookInfo.objects.get( id =pk) except BookInfo.DoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND) # 获取前端传入的请求体数据 # 创建序列化器进行反序列化 serializer = BookInfoModelSerializer(instance=book, data=request.data) # 校验 serializer.is_valid(raise_exception=True) # save--->update serializer.save() # 响应 return Response(serializer.data) 5、删除一条数据 (DELETE /books/ <pk>/ 删除指定 id 的记录) def delete(self, request, pk): # 查询pk所指定的模型对象 try: book = BookInfo.objects.get( id =pk) except BookInfo.DoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND) book.delete() return Response(status=status.HTTP_204_NO_CONTENT) "" " |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix