# 优化分页、搜索
This commit is contained in:
parent
1a823f7734
commit
08eefbf2c1
|
@ -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()
|
||||||
|
|
|
@ -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):
|
||||||
|
|
|
@ -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'
|
||||||
|
|
Loading…
Reference in New Issue