diff --git a/apps/accounts/api/__init__.py b/apps/accounts/api/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/apps/mosquito/api/__init__.py b/apps/mosquito/api/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/apps/mosquito/api/serializers.py b/apps/mosquito/api/serializers.py new file mode 100644 index 0000000..6737d89 --- /dev/null +++ b/apps/mosquito/api/serializers.py @@ -0,0 +1,26 @@ +from rest_framework import serializers +from mosquito.models import MosqPost + + +class MosqPostListSerializer(serializers.ModelSerializer): + smart_chip = serializers.SerializerMethodField() + region = serializers.SerializerMethodField() + + class Meta: + model = MosqPost + fields = [ + 'mosq', + 'led', + 'energy', + 'smart_chip' + 'signal', + 'coordinate' + 'region' + 'time' + ] + + def get_smart_chip(self, obj): + return obj.mosq.smart_module.device_id + + def get_region(self, obj): + return obj.mosq.region \ No newline at end of file diff --git a/apps/mosquito/models.py b/apps/mosquito/models.py index 36ef047..2cfac8d 100644 --- a/apps/mosquito/models.py +++ b/apps/mosquito/models.py @@ -1,31 +1,20 @@ from django.db import models - - -class SmartModule(models.Model): - name = models.CharField(max_length=50, verbose_name='模块名称') - device_id = models.CharField(max_length=100, verbose_name='模块ID') - chip_id = models.CharField(max_length=100, verbose_name='单片机ID') - - class Meta: - verbose_name = '智能模块' - verbose_name_plural = verbose_name - - def __str__(self): - return self.name +from django.contrib.contenttypes.fields import GenericRelation +from smart.models import SmartModule class Mosquito(models.Model): name = models.CharField(max_length=100, verbose_name='设备名称') device_id = models.CharField(max_length=100, verbose_name='设备ID') - smart_module = models.ForeignKey(SmartModule, on_delete='PROTECT') region = models.CharField(max_length=50, verbose_name='区域') + smart_module = GenericRelation(SmartModule) class Meta: verbose_name = '灭蚊灯' verbose_name_plural = verbose_name def __str__(self): - return self.device_id + return self.name def get_absolute_url(self): pass @@ -36,9 +25,10 @@ class Mosquito(models.Model): class MosqPost(models.Model): mosq = models.ForeignKey(Mosquito, verbose_name='灭蚊灯', on_delete='PROTECT') - led = models.PositiveIntegerField(max_length=30, verbose_name='灭蚊数') - energy = models.PositiveIntegerField(max_length=10, verbose_name='电量') - signal = models.IntegerField(max_length=10, verbose_name='信号') + led = models.PositiveIntegerField(verbose_name='灭蚊数') + energy = models.PositiveIntegerField(verbose_name='电量') + # signal = models.IntegerField(verbose_name='信号') + # coordinate = models.CharField(max_length=100, verbose_name='坐标') times = models.DateTimeField(auto_now=False, auto_now_add=True) class Meta: diff --git a/apps/smart/__init__.py b/apps/smart/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/apps/smart/admin.py b/apps/smart/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/apps/smart/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/apps/smart/api/__init__.py b/apps/smart/api/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/apps/smart/apps.py b/apps/smart/apps.py new file mode 100644 index 0000000..057490e --- /dev/null +++ b/apps/smart/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class SmartConfig(AppConfig): + name = 'smart' diff --git a/apps/smart/models.py b/apps/smart/models.py new file mode 100644 index 0000000..c44ee17 --- /dev/null +++ b/apps/smart/models.py @@ -0,0 +1,21 @@ +from django.db import models +from django.contrib.contenttypes.fields import GenericForeignKey +from django.contrib.contenttypes.fields import GenericRelation +from django.contrib.contenttypes.models import ContentType + + +class SmartModule(models.Model): + name = models.CharField(max_length=50, verbose_name='模块名称') + desc = models.CharField(max_length=200, verbose_name='简介') + content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE) + object_id = models.PositiveIntegerField() + content_object = GenericForeignKey('content_type', 'object_id') + device_id = models.CharField(max_length=100, verbose_name='模块ID') + chip_id = models.CharField(max_length=100, verbose_name='单片机ID') + + class Meta: + verbose_name = '智能模块' + verbose_name_plural = verbose_name + + def __str__(self): + return self.name diff --git a/apps/smart/tests.py b/apps/smart/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/apps/smart/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/apps/smart/views.py b/apps/smart/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/apps/smart/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/mosqkiller/settings.py b/mosqkiller/settings.py index 2ce027f..9cd82fc 100644 --- a/mosqkiller/settings.py +++ b/mosqkiller/settings.py @@ -40,6 +40,7 @@ INSTALLED_APPS = [ 'django.contrib.messages', 'django.contrib.staticfiles', 'mosquito', + 'smart', ] MIDDLEWARE = [