from django.db.models import Q from drf_yasg.utils import swagger_auto_schema from rest_framework.decorators import action from rest_framework.viewsets import ModelViewSet from ERP_5.utils.base_views import MultipleDestroyMixin, MultipleOpenMixin from ERP_5.utils.paginations import GlobalPagination from basic_info.models import CustomerModel from basic_info.serializer.customer_serializer import CustomerSerializer, CustomerFindSerializer class CustomerViewSet(ModelViewSet, MultipleDestroyMixin, MultipleOpenMixin): """ create: 客户信息--新增 客户信息新增, status: 201(成功), return: 新增客户信息信息 destroy: 客户信息--删除 客户信息删除, status: 204(成功), return: None multiple_delete: 客户信息--批量删除,必传参数:ids=[1,2,3,4...] 客户信息批量删除, status: 204(成功), return: None multiple_open: 客户信息--批量启用或者禁用,必传(json)参数:ids=[1,2,3,4...](列表中可以只有一个),is_open=1/0 { "ids":[1,2], "is_open":"0" } is_open=1表示禁用,is_open=0表示启用, 客户信息批量启用或者禁用, status: 204(成功), return: None update: 客户信息--修改, 客户信息修改, status: 200(成功), return: 修改后的客户信息信息 partial_update: 客户信息--局部修改,可以传参任意属性的值,服务器会修改指定的属性值 客户信息局部修改, status: 200(成功), return: 修改后的客户信息信息 find: 客户信息--获取分页列表,可选json参数:name(名称),mobile(手机号码),phone(联系电话) { "name":"长沙", "mobile":"186","phone":xxx } 客户信息列表信息, status: 200(成功), return: 客户信息信息列表 retrieve: 查询某一个客户信息 查询指定ID的客户信息, status: 200(成功), return: 用户客户信息 """ queryset = CustomerModel.objects.all() serializer_class = CustomerSerializer pagination_class = GlobalPagination def get_queryset(self): if self.action == 'find': # 过滤查询 # 获取请求中的数据 name = self.request.data.get('name', None) phone = self.request.data.get('phone', None) mobile = self.request.data.get('mobile', None) query = Q() if name: query.add(Q(name__contains=name), 'AND') # 多条件组合 if phone: query.add(Q(phone__contains=phone), 'AND') if mobile: query.add(Q(mobile__contains=mobile), 'AND') return CustomerModel.objects.filter(query).all() else: return CustomerModel.objects.all() @swagger_auto_schema(method='POST', request_body=CustomerFindSerializer, operation_description="查询过滤") @action(methods=['POST'], detail=False) def find(self, request, *args, **kwargs): return super(CustomerViewSet, self).list(request, args, kwargs)