0
点赞
收藏
分享

微信扫一扫

序列化器 GenericAPIView的使用 混入扩展类

绪风 2022-04-24 阅读 48

ModelSerializer与常规的Serializer相同 ModelSerializer  基于模型类自动生成一系列字段  默认实现create()和update()方法,不需重写  序列化器默认只能序列化一条数据,序列化多条数据需要加上many=True

class DepartmentView(APIView):
    """
    使用序列化器返回数据
    """

    def put(self, request):
        dep_id = request.data.get("dep_id")
        name = request.data.get('name')
        # 通过dep_id来获取要修改的数据对象
        dep_obj = Department.objects.filter(id=dep_id).first()
        # 判断对象是否存在
        if dep_obj:
            # 存在时,进行修改
            # instance要修改的对象
            # data 要修改的数据
            # partial=True 默认修改全部,为True时,可以修改部分字段
            dep_serializer = DepartmentSerializer(instance=dep_obj, data={'name': name}, partial=True)
            
            # raise_exception 验证出错时,抛出异常信息
            dep_serializer.is_valid(raise_exception=True)
            dep_serializer.save()
            
            # 返回数据
            return Response({'msg': dep_serializer.data, 'code': 200})
        else:
            return Response({'msg': '修改的数据不存在', 'code': 400})

instance要修改的对象   data 要修改的数据 

partial=True 默认修改全部,为True时,可以修改部分字段

GenericAPIView使用

定义:继承了APIView,  提供了通用类属性、方法, 帮助我们快速编写视图

get_queryset(self) 返回视图使用的查询集,是列表视图与详情视图获取数据的基础

get_serializer_class(self) 返回序列化器类,默认返回serializer_class,可以重写

get_serializer 返回序列化器对象

混入扩展类

提供了5个Mixin扩展类,封装了通用的增、删、改、查

ListModelMixin  提供list方法 查询所有

CreateModelMixin 提供Create方法 增加一条数据

RetrieveModelMixin 提供Retrieve方法 获取单个数据

UpdateModelMixin 提供Update方法 修改一条数据

DestroyModelMixin 提供Destroy方法 删除一条数据

 

举报

相关推荐

0 条评论