diff --git a/apps/mosquito/api/serializers.py b/apps/mosquito/api/serializers.py index bca897b..88d810e 100644 --- a/apps/mosquito/api/serializers.py +++ b/apps/mosquito/api/serializers.py @@ -1,5 +1,6 @@ from rest_framework import serializers -from mosquito.models import Mosquito, MosqPost, DeviceTempLog, WeatherLog +from django.core.cache import cache +from mosquito.models import Mosquito, MosqPost, DeviceTempLog, WeatherLog, WeatherStationInfo from smart.api.serializers import SmartPushListSerializer @@ -50,6 +51,7 @@ class DeviceTempLogSerializer(serializers.ModelSerializer): class WeatherLogSerializer(serializers.ModelSerializer): + device_name = serializers.SerializerMethodField() power = serializers.SerializerMethodField() data_time = serializers.SerializerMethodField() create_time = serializers.SerializerMethodField() @@ -79,11 +81,28 @@ class WeatherLogSerializer(serializers.ModelSerializer): 'create_time', ] + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.latest = None + self.cur_device = None + def get_power(self, obj): # power max 12.6V, min 8.5V power = int((float(obj.power) - 8.5) / 4.1 * 100) return str(power) + + def get_device_name(self, obj): + device_id = obj.device_id + device = cache.get(device_id) + if device: + self.device = device + return device.device_name + else: + return obj.device_name + return None + def get_data_time(self, obj): return obj.data_time.strftime('%Y-%m-%d %H:%M:%S') + def get_create_time(self, obj): return obj.data_time.strftime('%Y-%m-%d %H:%M:%S') diff --git a/apps/mosquito/api/views.py b/apps/mosquito/api/views.py index c0badbc..67c2ac4 100644 --- a/apps/mosquito/api/views.py +++ b/apps/mosquito/api/views.py @@ -132,7 +132,7 @@ class WeatherLogListAPIView(ListAPIView, RoleMixin, WeatherStationListMixin): if qs.count() > 0: queryset = qs else: - qs = WeatherLog.objects.filter(device_name__contains=device) + qs = WeatherStationInfo.objects.filter(device_name__contains=device) device_ids = [device.device_id for device in qs] queryset = queryset.filter(device_id__in=device_ids) last_day = self.request.GET.get('last_day')