feat: enstat2增加查询条件
This commit is contained in:
parent
c71557b82b
commit
64c2d86cd7
|
@ -1,5 +1,5 @@
|
|||
from django_filters import rest_framework as filters
|
||||
from apps.enm.models import MpointStat, EnStat
|
||||
from apps.enm.models import MpointStat, EnStat, EnStat2
|
||||
from datetime import datetime
|
||||
from django.db.models import F, Q
|
||||
|
||||
|
@ -156,4 +156,46 @@ class EnStatFilter(filters.FilterSet):
|
|||
elif query['type'] in ['year_s']:
|
||||
queryset = queryset.filter(
|
||||
Q(year_s__lte=end_year))
|
||||
return queryset
|
||||
|
||||
class EnStat2Filter(filters.FilterSet):
|
||||
start_time = filters.CharFilter(method='filter_start_time')
|
||||
end_time = filters.CharFilter(method='filter_end_time')
|
||||
class Meta:
|
||||
model = EnStat2
|
||||
fields = {
|
||||
"type": ["exact"],
|
||||
"day_s": ["exact"],
|
||||
"month_s": ["exact"],
|
||||
"year_s": ["exact"],
|
||||
}
|
||||
|
||||
def filter_start_time(self, queryset, name, value):
|
||||
query = self.data
|
||||
start_time = datetime.strptime(value, '%Y-%m-%d %H:%M:%S')
|
||||
start_year, start_month, start_day, start_hour = start_time.year, start_time.month, start_time.day, start_time.hour
|
||||
if query['type'] in ['day_s']:
|
||||
queryset = queryset.filter(
|
||||
Q(year_s__gt=start_year) |
|
||||
Q(year_s=start_year, month_s__gt=start_month) |
|
||||
Q(year_s=start_year, month_s=start_month, day_s__gte=start_day))
|
||||
elif query['type'] in ['month_s']:
|
||||
queryset = queryset.filter(
|
||||
Q(year_s__gt=start_year) |
|
||||
Q(year_s=start_year, month_s__gte=start_month))
|
||||
return queryset
|
||||
|
||||
def filter_end_time(self, queryset, name, value):
|
||||
query = self.data
|
||||
end_time = datetime.strptime(value, '%Y-%m-%d %H:%M:%S')
|
||||
end_year, end_month, end_day, end_hour = end_time.year, end_time.month, end_time.day, end_time.hour
|
||||
if query['type'] in ['day_s']:
|
||||
queryset = queryset.filter(
|
||||
Q(year_s__lt=end_year) |
|
||||
Q(year_s=end_year, month_s__lt=end_month) |
|
||||
Q(year_s=end_year, month_s=end_month, day_s__lte=end_day))
|
||||
elif query['type'] in ['month_s']:
|
||||
queryset = queryset.filter(
|
||||
Q(year_s__lt=end_year) |
|
||||
Q(year_s=end_year, month_s__lte=end_month))
|
||||
return queryset
|
|
@ -4,7 +4,7 @@ from apps.utils.viewsets import CustomModelViewSet, CustomGenericViewSet
|
|||
from rest_framework.mixins import ListModelMixin
|
||||
from apps.utils.mixins import BulkCreateModelMixin, BulkDestroyModelMixin
|
||||
from apps.enm.serializers import (MpointSerializer, MpLogSerializer, MpointStatSerializer, EnStatSerializer, EnStat2Serializer, ReCalSerializer)
|
||||
from apps.enm.filters import MpointStatFilter, EnStatFilter
|
||||
from apps.enm.filters import MpointStatFilter, EnStatFilter, EnStat2Filter
|
||||
from apps.enm.tasks import cal_mpointstat_manual
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.decorators import action
|
||||
|
@ -94,4 +94,4 @@ class EnStat2ViewSet(ListModelMixin, CustomGenericViewSet):
|
|||
perms_map = {'get': '*'}
|
||||
queryset = EnStat2.objects.all()
|
||||
serializer_class = EnStat2Serializer
|
||||
filterset_fields = ['year_s', 'month_s', 'day_s', 'type']
|
||||
filterset_class = EnStat2Filter
|
Loading…
Reference in New Issue