from rest_framework.views import APIView from apps.mall.models import FreightConfigManage from utils.jsonResponse import SuccessResponse,ErrorResponse,DetailResponse from utils.common import get_parameter_dic,formatdatetime from django.db.models import Q,F,Sum,Count from django.db import transaction from rest_framework import serializers from rest_framework_simplejwt.authentication import JWTAuthentication from utils.serializers import CustomModelSerializer from utils.viewset import CustomModelViewSet from rest_framework.permissions import IsAuthenticated from utils.pagination import CustomPagination import json import django_filters import logging logger = logging.getLogger(__name__) class FreightConfigManageFilterset(django_filters.rest_framework.FilterSet): #开始时间 beginAt = django_filters.DateTimeFilter(field_name='create_datetime', lookup_expr='gte') # 指定过滤的字段 #结束时间 endAt = django_filters.DateTimeFilter(field_name='create_datetime', lookup_expr='lte') # 模糊搜索 name = django_filters.CharFilter(field_name='region_name', lookup_expr='icontains') # icontains表示该字段模糊搜索 class Meta: model = FreightConfigManage fields = ['beginAt', 'endAt','name'] class FreightConfigManageSerializer(CustomModelSerializer): class Meta: model = FreightConfigManage read_only_fields = ["id"] fields = '__all__' class FreightConfigManageViewSet(CustomModelViewSet): queryset = FreightConfigManage.objects.all().order_by("id") serializer_class = FreightConfigManageSerializer filterset_class = FreightConfigManageFilterset # search_fields = ("name",) #获取已选择区域,用于防止区域重复选择 def getAllSelect(self,request): reqData = get_parameter_dic(request) id = reqData.get("id",None) queryset = FreightConfigManage.objects.filter(is_default=False) if id: queryset = queryset.exclude(id=id) areaList = queryset.values_list("area",flat=True) return DetailResponse(data=list(areaList)) #重写delete方法,并改为逻辑删除 # def destroy(self, request, *args, **kwargs): # instance = self.get_object_list() # for i in range(len(instance)): # instance[i].is_delete = True # model = self.get_serializer().Meta.model # model.objects.bulk_update(instance,fields=['is_delete']) # return DetailResponse(msg="删除成功")