61 lines
2.5 KiB
Python
61 lines
2.5 KiB
Python
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="删除成功") |