import logging from django.db.models import Q from django.utils.decorators import method_decorator from drf_yasg import openapi from drf_yasg.utils import swagger_auto_schema from rest_framework import viewsets from goods_info.models import UnitsModel from goods_info.serializer.units_serializer import UnitsSerializer from ERP_5.utils.paginations import GlobalPagination from ERP_5.utils.base_views import MultipleDestroyMixin, MultipleOpenMixin logger = logging.getLogger('my') param3 = openapi.Parameter(name='name', type=openapi.TYPE_STRING, description="名称关键字", in_=openapi.IN_QUERY) @method_decorator(name='list', decorator=swagger_auto_schema( manual_parameters=[param3], operation_description="计量单位的搜索过滤") ) class UnitsView(viewsets.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: 修改后的计量单位信息 list: 计量单位--获取分页列表,可选json参数:name(名称) { "name":"长沙", } 计量单位列表信息, status: 200(成功), return: 计量单位信息列表 retrieve: 查询某一个计量单位 查询指定ID的计量单位, status: 200(成功), return: 用户计量单位 """ queryset = UnitsModel.objects.all() serializer_class = UnitsSerializer pagination_class = GlobalPagination def get_queryset(self): if self.action == 'list': # 过滤查询 # 获取请求参数(在json中):name,phone, mobile name = self.request.data.get('name', None) query = Q() if name: # 关键字查询两个字段 query.add(Q(basic_name__contains=name), 'OR') # 多条件组合 query.add(Q(backup_name__contains=name), 'OR') return UnitsModel.objects.filter(query).all() else: return UnitsModel.objects.all()