# 优化分页、搜索

This commit is contained in:
xianfuxing 2020-05-28 17:48:03 +08:00
parent 1a823f7734
commit 08eefbf2c1
3 changed files with 18 additions and 1 deletions

View File

@ -9,6 +9,7 @@ from mosquito.models import MosqPostStatistic, DevicePostStatistic
class DeviceCountSerializer(serializers.ModelSerializer): class DeviceCountSerializer(serializers.ModelSerializer):
device_name = serializers.SerializerMethodField()
mosq_count = serializers.SerializerMethodField() mosq_count = serializers.SerializerMethodField()
signal = serializers.SerializerMethodField() signal = serializers.SerializerMethodField()
energy = serializers.SerializerMethodField() energy = serializers.SerializerMethodField()
@ -19,6 +20,7 @@ class DeviceCountSerializer(serializers.ModelSerializer):
fields = [ fields = [
'id', 'id',
'device_id', 'device_id',
'device_name',
'signal', 'signal',
'mosq_count', 'mosq_count',
'energy', 'energy',
@ -39,6 +41,13 @@ class DeviceCountSerializer(serializers.ModelSerializer):
def get_calc_time(self, obj): def get_calc_time(self, obj):
return obj.data_time.strftime('%Y-%m-%d %H:%M:%S') return obj.data_time.strftime('%Y-%m-%d %H:%M:%S')
def get_device_name(self, obj):
qs = CelexDeviceInfo.objects.filter(device_id=obj.device_id)
if qs.count() > 0:
device = qs[0]
return device.device_name
return None
class DeviceInfoSerializer(serializers.ModelSerializer): class DeviceInfoSerializer(serializers.ModelSerializer):
device_name = serializers.SerializerMethodField() device_name = serializers.SerializerMethodField()

View File

@ -15,6 +15,7 @@ from rest_framework.filters import SearchFilter, OrderingFilter
from mosquito.api.pagination import ( from mosquito.api.pagination import (
PostLimitOffsetPagination, PostLimitOffsetPagination,
PostPageNumberPagination, PostPageNumberPagination,
DeviceLogListPagination,
DeviceLogHistoryPagination DeviceLogHistoryPagination
) )
from .serializers import ( from .serializers import (
@ -32,7 +33,7 @@ class DeviceLogListAPIView(ListAPIView, RoleMixin, DeviceListMixin):
serializer_class = DeviceCountSerializer serializer_class = DeviceCountSerializer
permission_classes = [IsAuthenticated] permission_classes = [IsAuthenticated]
filter_backends = [SearchFilter, OrderingFilter] filter_backends = [SearchFilter, OrderingFilter]
pagination_class = PostPageNumberPagination pagination_class = DeviceLogListPagination
search_fields = ['device_id'] search_fields = ['device_id']
def get_queryset(self, *args, **kwargs): def get_queryset(self, *args, **kwargs):

View File

@ -10,6 +10,13 @@ class PostPageNumberPagination(PageNumberPagination):
page_size = 10 page_size = 10
class DeviceLogListPagination(PageNumberPagination):
page_size = 10
page_size_query_param = 'limit'
page_query_param = 'page'
max_page_size = 1000
class DeviceLogHistoryPagination(PageNumberPagination): class DeviceLogHistoryPagination(PageNumberPagination):
page_size = 10 page_size = 10
page_size_query_param = 'limit' page_size_query_param = 'limit'