# add smart

This commit is contained in:
xianfuxing 2018-07-12 15:52:31 +08:00
parent 8965b5d190
commit f69bf49d85
12 changed files with 70 additions and 18 deletions

View File

View File

View File

@ -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

View File

@ -1,31 +1,20 @@
from django.db import models from django.db import models
from django.contrib.contenttypes.fields import GenericRelation
from smart.models import SmartModule
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
class Mosquito(models.Model): class Mosquito(models.Model):
name = models.CharField(max_length=100, verbose_name='设备名称') name = models.CharField(max_length=100, verbose_name='设备名称')
device_id = models.CharField(max_length=100, verbose_name='设备ID') 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='区域') region = models.CharField(max_length=50, verbose_name='区域')
smart_module = GenericRelation(SmartModule)
class Meta: class Meta:
verbose_name = '灭蚊灯' verbose_name = '灭蚊灯'
verbose_name_plural = verbose_name verbose_name_plural = verbose_name
def __str__(self): def __str__(self):
return self.device_id return self.name
def get_absolute_url(self): def get_absolute_url(self):
pass pass
@ -36,9 +25,10 @@ class Mosquito(models.Model):
class MosqPost(models.Model): class MosqPost(models.Model):
mosq = models.ForeignKey(Mosquito, verbose_name='灭蚊灯', on_delete='PROTECT') mosq = models.ForeignKey(Mosquito, verbose_name='灭蚊灯', on_delete='PROTECT')
led = models.PositiveIntegerField(max_length=30, verbose_name='灭蚊数') led = models.PositiveIntegerField(verbose_name='灭蚊数')
energy = models.PositiveIntegerField(max_length=10, verbose_name='电量') energy = models.PositiveIntegerField(verbose_name='电量')
signal = models.IntegerField(max_length=10, 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) times = models.DateTimeField(auto_now=False, auto_now_add=True)
class Meta: class Meta:

0
apps/smart/__init__.py Normal file
View File

3
apps/smart/admin.py Normal file
View File

@ -0,0 +1,3 @@
from django.contrib import admin
# Register your models here.

View File

5
apps/smart/apps.py Normal file
View File

@ -0,0 +1,5 @@
from django.apps import AppConfig
class SmartConfig(AppConfig):
name = 'smart'

21
apps/smart/models.py Normal file
View File

@ -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

3
apps/smart/tests.py Normal file
View File

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

3
apps/smart/views.py Normal file
View File

@ -0,0 +1,3 @@
from django.shortcuts import render
# Create your views here.

View File

@ -40,6 +40,7 @@ INSTALLED_APPS = [
'django.contrib.messages', 'django.contrib.messages',
'django.contrib.staticfiles', 'django.contrib.staticfiles',
'mosquito', 'mosquito',
'smart',
] ]
MIDDLEWARE = [ MIDDLEWARE = [