| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729 |
- # -*- coding: utf-8 -*-
- from django.db import models
- import django.utils.timezone as timezone
- from django.contrib.auth.models import AbstractUser
- from django.contrib.auth.models import Group, GroupManager
- import datetime
- # one_year = datetime.timedelta(days=365)
- # one_year_later = datetime.datetime.now() + one_year
- # 自定义用户组:
- class User_Group(Group):
- role_describe = models.CharField(u'角色描述', max_length=50, null=True, blank=True)
- role_cre_time = models.DateTimeField(u'角色添加时间', default=timezone.now)
- role_cre_user = models.CharField(u'角色创建者', max_length=20,null=True, blank=True)
- role_logo = models.ImageField(u'首页logo', upload_to="home_logo/", default="/home_logo/default_logo.png")
- role_footer = models.TextField(u'首页footer信息', max_length=200, default="Copyright©2007-2018 All Rrights Resvered 版权所有:河南云飞科技发展有限公司")
- # role_header = models.TextField(u'首页footer信息', max_length=200, default="")
-
- class Meta:
- verbose_name = u'用户组列表'
- verbose_name_plural = verbose_name
- # def __str__(self):
- # return self.name
- # logo表
- class Logo(models.Model):
- role_describe = models.CharField(u'角色描述', max_length=50, null=True, blank=True)
- role_cre_time = models.DateTimeField(u'角色添加时间', default=timezone.now)
- role_cre_user = models.CharField(u'角色创建者', max_length=20,null=True, blank=True)
- role_logo = models.ImageField(u'首页logo', upload_to="home_logo/", default="/home_logo/default_logo.png")
- role_footer = models.TextField(u'首页footer信息', max_length=200, default="Copyright©2007-2019 All Rrights Resvered 版权所有:河南云飞科技发展有限公司")
- role_header = models.TextField(u'首页header信息', max_length=200, default=" ")
-
- class Meta:
- verbose_name = u'logo列表'
- verbose_name_plural = verbose_name
- ordering = ['-role_cre_time']
- get_latest_by = 'role_cre_time'
- def __str__(self):
- return self.role_describe
- # # 经销商列表
- # class Agency(models.Model):
- # agency_name = models.CharField(u'经销商名字',max_length=50,null=True,blank=True)
- # agency_desc = models.CharField(u'经销商描述',max_length=100,null=True,blank=True)
- # def __str__(self):
- # return self.agency_name
- # class Meta:
- # verbose_name = u'经销商列表'
- # verbose_name_plural = verbose_name
- # 继承AbstractUser类
- class MyUser(AbstractUser):
- USER_RANK_CHOICES = {
- 1: '省级',
- 2: '市级',
- 3: '县区级',
- }
- user_remark = models.TextField(u'用户备注', max_length=200, blank=True)
- user_rank = models.SmallIntegerField(
- u'用户级别', default=1, choices=USER_RANK_CHOICES.items())
- user_phone = models.CharField(u'用户手机', max_length=16, blank=True)
- user_picture = models.ImageField(u'用户头像', upload_to="user_photo/", default="user_photo/default.png")
- base_name = models.CharField(u'基地名称', max_length=50, blank=True, null=True)
- base_show = models.ImageField(u'基地展示', upload_to="base_show/", default="base_show/default.png")
- user_pro = models.CharField(u'用户省', max_length=50, blank=True)
- user_city = models.CharField(u'用户市', max_length=50, blank=True)
- user_area = models.CharField(u'用户区', max_length=50, blank=True)
- user_agency = models.ForeignKey(User_Group,null=True,blank=True,verbose_name=u'用户所属经销商')
- user_header = models.CharField(u'页面标题展示', max_length=50, blank=True)
- is_agency = models.BooleanField(u'是否为经销商',default=False)
- # expire_date = models.DateTimeField(u'账号到期时间', null=True, blank=True, default=one_year_later)
- expire_date = models.DateTimeField(u'账号到期时间', null=True, blank=True)
- user_logo = models.ForeignKey(Logo,null=True,blank=True,verbose_name=u'用户使用的Logo')
- # 用户组:
- # user_group = models.ManyToManyField(User_Group,blank=True, null=True, verbose_name=u'用户所属组')
- class Meta:
- verbose_name = u'用户列表'
- verbose_name_plural = verbose_name
- ordering = ['-date_joined']
- get_latest_by = 'date_joined'
- # def __str__(self):
- # return self.user_remark
- # 用户操作日志:
- class User_Log(models.Model):
- # log_user = models.ForeignKey(MyUser,verbose_name=u'用户名', blank=True, null=True)
- log_user = models.CharField(u'用户名', max_length=50, null=True, blank=True)
- log_time = models.DateTimeField(u'操作时间', default=timezone.now)
- log_ip = models.CharField(u'IP地址', max_length=100, null=True, blank=True)
- log_desc = models.CharField(u'操作描述', max_length=100, null=True, blank=True)
- def __str__(self):
- return self.log_user
- class Meta:
- verbose_name = u'用户操作日志表'
- verbose_name_plural = verbose_name
- ordering = ['-log_time']
- get_latest_by = 'log_time'
- # 设备类型列表:
- class Equip_type(models.Model):
- type_id = models.PositiveIntegerField(u'设备类型编号', primary_key=True)
- type_name = models.CharField(u'设备类型名称', max_length=50, blank=True)
- type_add_time = models.DateTimeField(u'设备类型添加时间', default=timezone.now)
- topic_name = models.CharField(u'主题简称', max_length=10, blank=True)
- def __str__(self):
- return self.type_name
- class Meta:
- verbose_name = u"设备类型表"
- verbose_name_plural = verbose_name
- ordering = ['-type_add_time']
- get_latest_by = 'type_add_time'
- # 设备列表:
- class Equip(models.Model):
- equip_id = models.CharField(u'设备id', max_length=30, primary_key=True)
- equip_user = models.ForeignKey(
- MyUser, blank=True, null=True, verbose_name=u'设备用户')
- equip_type = models.ForeignKey(
- Equip_type, blank=True, null=True, verbose_name=u'设备类型')
- equip_name = models.CharField(u'设备名称', max_length=100, blank=True)
- equip_add_time = models.DateTimeField(u'设备添加时间', default=timezone.now)
- equip_allot_user = models.CharField(
- u'设备分配者id', blank=True, null=True, max_length=50)
- equip_sn = models.CharField(u'设备授权码', blank=True, null=True, max_length=50)
- # 位置字段:
- equip_location = models.CharField(u'设备位置', max_length=150, blank=True)
- # equip_iccid = models.CharField(u'SIM卡iccid', max_length=50, blank=True)
- equip_agency = models.ForeignKey(User_Group,null=True,blank=True,verbose_name=u'设备所属经销商')
- equip_desc = models.CharField(u'设备状态', max_length=5, blank=True,null=True)
- scene = models.CharField(u'设备场景', max_length=5, blank=True,null=True) # 1 小麦玉米 2 水稻 3 果园茶园
- # old_eid = models.CharField(u'原始设备id', max_length=30, blank=True,null=True)
- # 此字段针对对接设备,非对接设备默认为空
- # 默认为手动添加 添加格式为 http://192.168.1.1#1 其中#后面的数字判断是否需要发送害虫识别结果
- ftp_addr = models.TextField(u'设备对接外部ip地址', blank=True, null=True)
- def __str__(self):
- return self.equip_id
- class Meta:
- verbose_name = u"设备列表"
- verbose_name_plural = verbose_name
- ordering = ['-equip_add_time']
- get_latest_by = 'equip_add_time'
- permissions = (
- ("can_see_scd", "Can see scd"),
- ("can_see_cbd", "Can see cbd"),
- ("can_see_ybq", "Can see ybq"),
- ("can_see_tccb", "Can see tccb"),
- ("can_see_qxz", "Can see qxz"),
- ("can_see_jk", "Can see jk"),
- ("can_see_bzy", "Can see bzy"),
- ("can_see_xyq", "Can see xyq"),
- ("can_see_alarm", "Can see alarm"),
- ("can_see_vr", "Can see vr"),
- ("no_can_see_sim", "No can see sim"),
- ("ykm_hl", "ykm hl"), # 依科曼何磊定制菜单权限
- )
- # 杀虫灯状态:
- class SCDstatus(models.Model):
- equip_id = models.ForeignKey(Equip, blank=True)
- #auto_now=True:媒体更新状态表时,随之更新上报时间!!!
- upl_time = models.DateTimeField(u'上报时间', auto_now=True)
-
- is_online = models.CharField(u'在线状态', max_length=5, blank=True,null=True)
- off_time = models.DateTimeField(u'离线时间', blank=True,null=True)
- ds = models.CharField(u'设备开关', max_length=5, blank=True) # 设备开关 0 关机, 1 开机
- scd_status = models.TextField(u'杀虫灯状态', blank=True, null=True)
- paramconf = models.TextField(u'设备参数配置', blank=True, null=True)
- serverconf = models.TextField(u'服务器配置', blank=True, null=True)
- lng = models.CharField(u'经度', max_length=50, blank=True)
- lat = models.CharField(u'维度', max_length=50, blank=True)
- # 位置字段:
- equip_location = models.CharField(u'设备位置', max_length=150, blank=True)
- # def __str__(self):
- # return (self.equip_id)
- class Meta:
- verbose_name = u"杀虫灯-状态表"
- verbose_name_plural = verbose_name
- ordering = ['-equip_id__equip_add_time']
- get_latest_by = 'equip_id__equip_add_time'
- # 杀虫灯状态全部数据:
- class SCDstatus_all(models.Model):
- equip_id = models.ForeignKey(Equip, blank=True)
- #auto_now=True:媒体更新状态表时,随之更新上报时间!!!
- upl_time = models.DateTimeField(u'上报时间', auto_now=True)
-
- is_online = models.CharField(u'在线状态', max_length=5, blank=True,null=True)
- off_time = models.DateTimeField(u'离线时间', blank=True,null=True)
- ds = models.CharField(u'设备开关', max_length=5, blank=True) # 设备开关 0 关机, 1 开机
- scd_status = models.TextField(u'杀虫灯状态', blank=True, null=True)
- paramconf = models.TextField(u'设备参数配置', blank=True, null=True)
- serverconf = models.TextField(u'服务器配置', blank=True, null=True)
- lng = models.CharField(u'经度', max_length=50, blank=True)
- lat = models.CharField(u'维度', max_length=50, blank=True)
- # 位置字段:
- equip_location = models.CharField(u'设备位置', max_length=150, blank=True)
- # def __str__(self):
- # return (self.equip_id)
- class Meta:
- verbose_name = u"杀虫灯-状态表-全部"
- verbose_name_plural = verbose_name
- ordering = ['-equip_id__equip_add_time']
- get_latest_by = 'equip_id__equip_add_time'
- # 杀虫灯数据表:
- class SCDdata(models.Model):
- equip_id = models.ForeignKey(Equip)
- upl_time = models.DateTimeField(u'上报时间', default=timezone.now)
- scd_data = models.TextField(u'杀虫灯数据', blank=True, null=True)
- ds = models.CharField(u'设备开关', max_length=5, blank=True) # 设备开关 0 关机, 1 开机
- # def __str__(self):
- # return self.equip_id
- class Meta:
- verbose_name = u'杀虫灯-数据表'
- verbose_name_plural = verbose_name
- ordering = ['-upl_time']
- get_latest_by = 'upl_time'
- # 杀虫灯最新数据表
- class RecentSCDdata(models.Model):
- equip_id = models.ForeignKey(Equip)
- equip_name = models.CharField(u'设备名称', max_length=100, blank=True)
- upl_time = models.DateTimeField(u'数据上传时间', default=timezone.now)
- scd_data = models.TextField(u'杀虫灯数据',blank=True,null=True)
- ds = models.CharField(u'设备开关',max_length=5,blank=True) # 设备开关 0 关机, 1 开机
- class Meta:
- verbose_name = u'杀虫灯-最新数据表'
- verbose_name_plural = verbose_name
- ordering = ['-equip_id__equip_add_time']
- get_latest_by = 'equip_id__equip_add_time'
- # 测报灯RTU状态:
- class RTUstatus(models.Model):
- equip_id = models.ForeignKey(Equip, blank=True)
- #auto_now=True:媒体更新状态表时,随之更新上报时间!!!
- upl_time = models.DateTimeField(u'上报时间', auto_now=True)
- is_online = models.CharField(u'在线状态', max_length=5, blank=True,null=True)
- off_time = models.DateTimeField(u'离线时间', blank=True,null=True)
- rtu_status = models.TextField(u'rtu状态', blank=True, null=True)
- # def __str__(self):
- # return (self.equip_id)
- class Meta:
- verbose_name = u"RTU-状态表"
- verbose_name_plural = verbose_name
- ordering = ['-equip_id__equip_add_time']
- get_latest_by = 'equip_id__equip_add_time'
- # 测报灯RTU数据表:
- class RTUdata(models.Model):
- equip_id = models.ForeignKey(Equip)
- upl_time = models.DateTimeField(u'上报时间', default=timezone.now)
- rtu_data = models.TextField(u'rtu数据', blank=True, null=True)
- # def __str__(self):
- # return self.equip_id
- class Meta:
- verbose_name = u'RTU-数据表'
- verbose_name_plural = verbose_name
- ordering = ['-upl_time']
- get_latest_by = 'upl_time'
- # 诱捕器状态:
- class YBQstatus(models.Model):
- equip_id = models.ForeignKey(Equip, blank=True)
- #auto_now=True:媒体更新状态表时,随之更新上报时间!!!
- upl_time = models.DateTimeField(u'上报时间', auto_now=True)
- pest_name = models.CharField(u'监测害虫名称', max_length=10, blank=True,null=True)
- equip_code = models.CharField(u'设备编码', max_length=10, blank=True,null=True)
- sex_type = models.CharField(u'性诱类型', max_length=20, blank=True,null=True)
- is_online = models.CharField(u'在线状态', max_length=5, blank=True,null=True)
- off_time = models.DateTimeField(u'离线时间', blank=True,null=True)
- ds = models.CharField(u'设备开关', max_length=5, blank=True) # 设备开关 0 关机, 1 开机
- ybq_status = models.TextField(u'诱捕器状态', blank=True, null=True)
- paramconf = models.TextField(u'设备参数配置', blank=True, null=True)
- serverconf = models.TextField(u'服务器配置', blank=True, null=True)
- lng = models.CharField(u'经度', max_length=50, blank=True)
- lat = models.CharField(u'维度', max_length=50, blank=True)
- # 位置字段:
- equip_location = models.CharField(u'设备位置', max_length=150, blank=True)
- # def __str__(self):
- # return (self.equip_id)
- class Meta:
- verbose_name = u"诱捕器-状态表"
- verbose_name_plural = verbose_name
- ordering = ['-equip_id__equip_add_time']
- get_latest_by = 'equip_id__equip_add_time'
- # 诱捕器数据表:
- class YBQdata(models.Model):
- equip_id = models.ForeignKey(Equip)
- upl_time = models.DateTimeField(u'上报时间', default=timezone.now)
- equip_code = models.CharField(u'设备编码', max_length=10, blank=True,null=True)
- ybq_data = models.TextField(u'诱捕器数据', blank=True, null=True)
- ds = models.CharField(u'设备开关', max_length=5, blank=True) # 设备开关 0 关机, 1 开机
- # def __str__(self):
- # return self.equip_id
- class Meta:
- verbose_name = u'诱捕器-数据表'
- verbose_name_plural = verbose_name
- ordering = ['-upl_time']
- get_latest_by = 'upl_time'
- # # 智能性诱图片
- # class Sex_Trap_Photo(models.Model):
- # equip_id = models.ForeignKey(Equip, blank=True, null=True, verbose_name=u'设备ID')
- # upl_time = models.DateTimeField(u'上传时间', default=timezone.now)
- # addr = models.CharField(u'照片路径', max_length=200, blank=True, null=True)
- # # 用户自定义添加:作物名称、病虫害阶段、病虫名称、雌雄、数量
- # describe = models.TextField(u'描述', blank=True, null=True)
- # def __str__(self):
- # return self.addr
- # class Meta:
- # verbose_name = u'性诱设备-照片列表'
- # verbose_name_plural = verbose_name
- # ordering = ['-upl_time']
- # get_latest_by = 'upl_time'
- # 诱捕器照片记录:
- class YBQphoto(models.Model):
- equip_id = models.ForeignKey(Equip, blank=True, null=True, verbose_name=u'设备ID')
- upl_time = models.DateTimeField(u'上传时间', default=timezone.now)
- addr = models.CharField(u'照片路径', max_length=200, blank=True, null=True)
- # 用户自定义添加:作物名称、病虫害阶段、病虫名称、雌雄、数量
- describe = models.TextField(u'描述', blank=True, null=True)
- real_time = models.DateTimeField(u'入库时间', default=timezone.now)
- def __str__(self):
- return self.addr
- class Meta:
- verbose_name = u'诱捕器-照片列表'
- verbose_name_plural = verbose_name
- ordering = ['-real_time']
- get_latest_by = 'real_time'
- # 糖醋测报状态:
- class TCCBstatus(models.Model):
- equip_id = models.ForeignKey(Equip, blank=True)
- #auto_now=True:媒体更新状态表时,随之更新上报时间!!!
- upl_time = models.DateTimeField(u'上报时间', auto_now=True)
- is_online = models.CharField(u'在线状态', max_length=5, blank=True,null=True)
- off_time = models.DateTimeField(u'离线时间', blank=True,null=True)
- tccb_status = models.TextField(u'糖醋测报状态', blank=True, null=True)
- paramconf = models.TextField(u'设备参数配置', blank=True, null=True)
- serverconf = models.TextField(u'服务器配置', blank=True, null=True)
- lng = models.CharField(u'经度', max_length=50, blank=True)
- lat = models.CharField(u'维度', max_length=50, blank=True)
- # 位置字段:
- equip_location = models.CharField(u'设备位置', max_length=150, blank=True)
- # def __str__(self):
- # return (self.equip_id)
- class Meta:
- verbose_name = u"糖醋测报-状态表"
- verbose_name_plural = verbose_name
- ordering = ['-equip_id__equip_add_time']
- get_latest_by = 'equip_id__equip_add_time'
-
-
- # 糖醋测报状态:
- class TCCBdata(models.Model):
- equip_id = models.ForeignKey(Equip)
- upl_time = models.DateTimeField(u'上报时间', default=timezone.now)
- tccb_data = models.TextField(u'糖醋测报数据', blank=True, null=True)
- # def __str__(self):
- # return self.equip_id
- class Meta:
- verbose_name = u'糖醋测报-数据表'
- verbose_name_plural = verbose_name
- ordering = ['-upl_time']
- get_latest_by = 'upl_time'
- # 糖醋测报照片记录:
- class TCCBphoto(models.Model):
- equip_id = models.ForeignKey(Equip, blank=True, null=True, verbose_name=u'设备ID')
- upl_time = models.DateTimeField(u'上传时间', default=timezone.now)
- addr = models.CharField(u'照片路径', max_length=200, blank=True, null=True)
- # 用户自定义添加:作物名称、病虫害阶段、病虫名称、雌雄、数量
- describe = models.TextField(u'描述', blank=True, null=True)
- def __str__(self):
- return self.addr
- class Meta:
- verbose_name = u'糖醋测报-照片列表'
- verbose_name_plural = verbose_name
- ordering = ['-upl_time']
- get_latest_by = 'upl_time'
- # 测报灯状态:
- class CBDstatus(models.Model):
- equip_id = models.ForeignKey(Equip)
- #auto_now=True:媒体更新状态表时,随之更新上报时间!!!
- upl_time = models.DateTimeField(u'上报时间', auto_now=True)
- etype = models.CharField(u'测报灯类型', max_length=30, blank=True,null=True)
- is_online = models.CharField(u'在线状态', max_length=5, blank=True,null=True)
- off_time = models.DateTimeField(u'离线时间', blank=True,null=True)
- cbd_status = models.TextField(u'测报灯状态', blank=True, null=True)
- paramconf = models.TextField(u'设备参数配置', blank=True, null=True)
- serverconf = models.TextField(u'服务器配置', blank=True, null=True)
-
- rtuinfo = models.TextField(u'rtu信息', blank=True, null=True)
- lng = models.CharField(u'经度', max_length=50, blank=True,null=True)
- lat = models.CharField(u'纬度', max_length=50, blank=True,null=True)
- old_eid = models.CharField(u'原始设备id', max_length=30, blank=True,null=True)
- # 位置字段:
- equip_location = models.CharField(u'设备位置', max_length=150, blank=True)
- # 绑定sim卡
- simid = models.CharField(u'设备sim卡', max_length=50, blank=True, null=True)
- # def __str__(self):
- # return (self.equip_id)
- class Meta:
- verbose_name = u"测报灯-状态表"
- verbose_name_plural = verbose_name
- ordering = ['-equip_id__equip_add_time']
- get_latest_by = 'equip_id__equip_add_time'
- # 测报灯状态全部数据:
- class CBDstatus_all(models.Model):
- equip_id = models.ForeignKey(Equip)
- #auto_now=True:媒体更新状态表时,随之更新上报时间!!!
- upl_time = models.DateTimeField(u'上报时间', auto_now=True)
- is_online = models.CharField(u'在线状态', max_length=5, blank=True,null=True)
- off_time = models.DateTimeField(u'离线时间', blank=True,null=True)
- cbd_status = models.TextField(u'测报灯状态', blank=True, null=True)
- paramconf = models.TextField(u'设备参数配置', blank=True, null=True)
- serverconf = models.TextField(u'服务器配置', blank=True, null=True)
- lng = models.CharField(u'经度', max_length=50, blank=True,null=True)
- lat = models.CharField(u'维度', max_length=50, blank=True,null=True)
- # 位置字段:
- equip_location = models.CharField(u'设备位置', max_length=150, blank=True)
- # def __str__(self):
- # return (self.equip_id)
- class Meta:
- verbose_name = u"测报灯-状态表-全部"
- verbose_name_plural = verbose_name
- ordering = ['-equip_id__equip_add_time']
- get_latest_by = 'equip_id__equip_add_time'
- # 测报灯数据记录:
- class CBDdata(models.Model):
- equip_id = models.ForeignKey(Equip, blank=True, null=True, verbose_name=u'设备ID')
- upl_time = models.DateTimeField(u'数据上传时间', default=timezone.now)
- cbd_data = models.TextField(u'测报灯数据', blank=True, null=True)
- # def __str__(self):
- # return self.equip_name
- class Meta:
- verbose_name = u'测报灯-数据表'
- verbose_name_plural = verbose_name
- ordering = ['-upl_time']
- get_latest_by = 'upl_time'
- # 测报灯最新数据记录:
- class RecentCBDdata(models.Model):
- equip_id = models.ForeignKey(Equip, blank=True, null=True, verbose_name=u'设备ID')
- equip_name = models.CharField(u'设备名称', max_length=100, blank=True)
- etype = models.CharField(u'测报灯类型', max_length=30, blank=True,null=True)
- upl_time = models.DateTimeField(u'数据上传时间', default=timezone.now)
- cbd_data = models.TextField(u'测报灯数据', blank=True, null=True)
- scene = models.CharField(u'设备场景', max_length=5, blank=True,null=True) # 1 小麦玉米 2 水稻 3 果园茶园
- discern = models.BooleanField(u'害虫识别功能',default=False) # 害虫识别 0为带有识别功能 1为 无识别功能
- # 识别按钮不存在 查看统计为手动统计界面----------0
- # 识别按钮存在 查看统计为自动统计界面------------1
- # 识别按钮不存在 查看统计为自动统计界面(有计数功能)-------------2
- disc = models.CharField(u'是否有识别功能', max_length=5,default=1)
- # def __str__(self):
- # return self.equip_name
- class Meta:
- verbose_name = u'测报灯-最新数据表'
- verbose_name_plural = verbose_name
- ordering = ['-equip_id__equip_add_time']
- get_latest_by = 'equip_id__equip_add_time'
- # 萤石token表
- class JKtoken(models.Model):
- account = models.CharField(u'账号', max_length=30, blank=True, null=True)
- token = models.CharField(u'token', max_length=80, blank=True, null=True) # 七天有效期
- upl_time = models.DateTimeField(u'监控token获取时间', default=timezone.now)
-
- class Meta:
- verbose_name = u'监控-token表'
- verbose_name_plural = verbose_name
- ordering = ['-upl_time']
- get_latest_by = 'upl_time'
- # 监控设备token表
- class JKdata(models.Model):
- equip_id = models.ForeignKey(Equip, blank=True, null=True, verbose_name=u'设备ID')
- is_online = models.CharField(u'在线状态', max_length=5, blank=True,null=True)
- upl_time = models.DateTimeField(u'监控token获取时间', default=timezone.now)
- # 萤石云accesstoken一周过期
- jk_token = models.TextField(u'监控设备所需token', blank=True, null=True)
- jk_type = models.CharField(u'监控设备类型', max_length=10, blank=True, null=True)
- class Meta:
- verbose_name = u'监控-数据表'
- verbose_name_plural = verbose_name
- ordering = ['-equip_id__equip_add_time']
- get_latest_by = 'equip_id__equip_add_time'
- # 监控定时拍照照片表:
- class JKphoto(models.Model):
- equip_id = models.ForeignKey(Equip, blank=True, null=True, verbose_name=u'设备ID')
- upl_time = models.DateTimeField(u'上传时间', default=timezone.now)
- addr = models.CharField(u'照片路径', max_length=200, blank=True, null=True)
- # 用户自定义添加:孢子识别结果
- describe = models.TextField(u'描述', blank=True, null=True)
- class Meta:
- verbose_name = u'监控-照片列表'
- verbose_name_plural = verbose_name
- ordering = ['-upl_time']
- get_latest_by = 'upl_time'
- # 测报灯照片记录:
- class CBDphoto(models.Model):
- equip_id = models.ForeignKey(Equip, blank=True, null=True, verbose_name=u'设备ID')
- upl_time = models.DateTimeField(u'上传时间', default=timezone.now)
- addr = models.CharField(u'照片路径', max_length=200, blank=True, null=True)
- at = models.CharField(u'环境温度', max_length=50, blank=True, null=True)
- ah = models.CharField(u'环境湿度', max_length=50, blank=True, null=True)
- # 用户自定义添加:作物名称、病虫害阶段、病虫名称、雌雄、数量
- describe = models.TextField(u'描述', blank=True, null=True)
- indentify_photo = models.CharField(u'识别照片路径', max_length=200, blank=True, null=True)
- indentify_result = models.TextField(u'识别结果', blank=True, null=True)
- def __str__(self):
- return self.addr
- class Meta:
- verbose_name = u'测报灯-照片列表'
- verbose_name_plural = verbose_name
- ordering = ['-upl_time']
- get_latest_by = 'upl_time'
- # 测报灯害虫种类表:
- class CBDpest(models.Model):
- user = models.ForeignKey(MyUser,verbose_name=u'害虫所属用户', blank=True, null=True)
- pest_add_time = models.DateTimeField(u'添加时间', default=timezone.now)
- pest_name = models.CharField(u'害虫名称', max_length=50)
- def __str__(self):
- return self.pest_name
- class Meta:
- verbose_name = u'测报灯-害虫列表'
- verbose_name_plural = verbose_name
- # 测报灯照片描述:
- class CBDphoto_desc(models.Model):
- equip_id = models.CharField(u'对应的设备id', max_length=50, blank=True, null=True)
- photo_id = models.ForeignKey(CBDphoto, blank=True, null=True, verbose_name=u'照片ID')
- desc_user = models.ForeignKey(MyUser,verbose_name=u'添加描述的用户', blank=True, null=True)
- add_time = models.DateTimeField(u'添加时间', default=timezone.now)
- # 用户自定义添加:作物名称、病虫害阶段、病虫名称、雌雄、数量
- crop_name = models.CharField(u'作物名称', max_length=20,blank=True, null=True)
- pest_case = models.CharField(u'虫害情况', max_length=30,blank=True, null=True)
- pest_name = models.ForeignKey(CBDpest, blank=True, null=True, verbose_name=u'害虫名称')
- pest_name2 = models.CharField(u'害虫名称2', max_length=30,blank=True, null=True)
- # pest_sex = models.TextField(u'害虫雌雄', max_length=10, blank=True, null=True)
- pest_num = models.CharField(u'害虫数量', max_length=10, blank=True, null=True)
- photo_time = models.CharField(u'对应的照片时间', max_length=50, blank=True, null=True)
- photo_time1 = models.DateTimeField(u'对应照片时间',blank=True, null=True)
- # def __str__(self):
- # return self.equip_name
- class Meta:
- verbose_name = u'测报灯-照片描述表'
- verbose_name_plural = verbose_name
- # 测报灯可升级版本:
- class CBDupdate(models.Model):
- num = models.CharField(u'序号', max_length=50, blank=True)
- desc = models.CharField(u'描述', max_length=20, blank=True)
- dver = models.CharField(u'版本号', max_length=50, blank=True)
- upl_time = models.DateTimeField(u'上传时间', default=timezone.now)
- # def __str__(self):
- # return self.equip_name
- class Meta:
- verbose_name = u'测报灯-可升级版本'
- verbose_name_plural = verbose_name
- ordering = ['-upl_time']
- get_latest_by = 'upl_time'
- # app反馈:
- class Fdb(models.Model):
- fdb_name = models.CharField(u'姓名', max_length=50, blank=True)
- fdb_phone = models.CharField(u'手机', max_length=20, blank=True)
- fdb_email = models.CharField(u'邮箱', max_length=50, blank=True)
- fdb_content = models.TextField(u'反馈内容')
- fdb_time = models.DateTimeField(u'反馈时间', default=timezone.now)
- fdb_rep_status = models.NullBooleanField(u'反馈回复状态', default=False)
- fdb_rep_time = models.DateTimeField(u'回复时间', default=timezone.now)
- fdb_rep_cont = models.TextField(u'回复内容', blank=True)
- def __str__(self):
- return self.fdb_name
- class Meta:
- verbose_name_plural = u"用户反馈表"
- # app轮播图:
- class App_pic(models.Model):
- app_pic_title = models.CharField(u'app轮播图描述', max_length=50, blank=True)
- app_pic = models.CharField(u'app轮播图地址', max_length=60, blank=True)
- # app轮播图链接类型;0:普通轮播图,1:外链
- app_pic_type = models.CharField(u'链接类型', max_length=5, blank=True)
- # app轮播图:
- app_pic_content = models.ImageField()
- app_pic_order = models.CharField(u'轮播图顺序', max_length=10, blank=True)
- app_pic_cre_time = models.DateTimeField(u'上传时间', default=timezone.now)
- def __str__(self):
- return self.app_pic_title
- class Meta:
- verbose_name_plural = u"APP轮播图列表"
- # 气象设备数据记录:
- class QXdata(models.Model):
- # 设备数据上传时间:
- upl_time = models.DateTimeField(u'数据上传时间', default=timezone.now)
- equip_id = models.ForeignKey(
- Equip, blank=True, null=True, verbose_name=u'设备ID')
- # def __str__(self):
- # return self.equip_name
- class Meta:
- verbose_name = u'气象设备'
- verbose_name_plural = verbose_name
- # 专家诊断:
- class Diag(models.Model):
- diag_title = models.CharField(u'专家诊断标题', max_length=50, blank=True)
- diag_content = models.CharField(u'专家诊断内容', max_length=200, blank=True)
- diag_time = models.DateTimeField(u'专家诊断时间', default=timezone.now)
- diag_oper = models.CharField(u'专家诊断操作', max_length=200, blank=True)
- # def __str__(self):
- # return self.equip_name
- class Meta:
- verbose_name_plural = "专家诊断列表"
- # 帮助中心 = 帮助说明+问题反馈
- # 帮助说明
- class Help(models.Model):
- help_title = models.CharField(u'标题', max_length=50, blank=True)
- help_ask = models.CharField(u'问题', max_length=200, blank=True)
- help_answer = models.TextField(u'回答', null=True)
- help_edit_time = models.DateTimeField(u'编辑时间', default=timezone.now)
- def __str__(self):
- return self.help_title
- class Meta:
- verbose_name = u"帮助中心"
- verbose_name_plural = verbose_name
- # 问题反馈:
- class Problem(models.Model):
- prob_ask = models.CharField(u'问题', max_length=200, blank=True)
- prob_cre_time = models.DateTimeField(u'提问时间', default=timezone.now)
- prob_cre_people = models.ForeignKey(MyUser, blank=True, null=True, verbose_name=u'提问者',related_name='prob_cre_people')
- prob_answer = models.TextField(u'回答', null=True)
- prob_answer_people = models.ForeignKey(MyUser, blank=True, null=True, verbose_name=u'回答者',related_name='prob_answer_people')
- # prob_answer_people = models.CharField(u'回答者',blank=True,max_length=50,null=True)
- prob_cre_time = models.DateTimeField(u'回答时间', auto_now=True)
- def __str__(self):
- return self.prob_ask
- class Meta:
- verbose_name = u"问题列表"
- verbose_name_plural = verbose_name
- # 评论列表:
- class Comment(models.Model):
- problem = models.ForeignKey(Problem, blank=True, null=True, verbose_name=u'问题')
- comment_content = models.TextField(u'评论内容', null=True)
- comment_people = models.ForeignKey(MyUser, blank=True, null=True, verbose_name=u'评论者')
- comment_time = models.DateTimeField(u'评论时间', default=timezone.now)
- # def __str__(self):
- # return self.comment_content
- class Meta:
- verbose_name = u"评论列表"
- verbose_name_plural = verbose_name
- # 气象设备预警范围设定:
- class QXalarmrange(models.Model):
- upl_time = models.DateTimeField(auto_now=True)
- ws = models.CharField(max_length=20, blank=True)
- at = models.CharField(max_length=20, blank=True)
- ah = models.CharField(max_length=20, blank=True)
- equip_id = models.ForeignKey(Equip)
- # def __str__(self):
- # return self.equip_type_name
- class Meta:
- verbose_name = u"气象设备预警范围"
- verbose_name_plural = verbose_name
- # 杀虫灯预警范围设定:
- class SCDalarmrange(models.Model):
- upl_time = models.DateTimeField(auto_now=True)
- cv = models.CharField(u'充电电压', max_length=20, blank=True)
- ci = models.CharField(u'充电电流', max_length=20, blank=True)
- equip_type_id = models.ForeignKey(Equip_type)
- # def __str__(self):
- # return self.equip_type.name
- class Meta:
- verbose_name = u"杀虫灯-预警范围"
- verbose_name_plural = verbose_name
- # 测报灯预警范围设定:
- class CBDalarmrange(models.Model):
- # 预警范围更新时间
- upl_time = models.DateTimeField(auto_now=True)
- cv = models.CharField(max_length=20, blank=True)
- ci = models.CharField(max_length=20, blank=True)
- equip_type_id = models.ForeignKey(Equip_type)
- # def __str__(self):
- # return self.equip_type.name
- class Meta:
- verbose_name = u"测报灯-预警范围"
- verbose_name_plural = verbose_name
- # 预警列表:
- class Alarm_record(models.Model):
- equip_id = models.ForeignKey(Equip)
- e_type = models.CharField(u'设备类型编号', max_length=20, blank=True, null=True)
- alarm_time = models.DateTimeField(u'预警时间', default=timezone.now)
- alarm_desc = models.TextField(u'预警描述', blank=True, null=True)
- # def __str__(self):
- # return self.equip_name
- class Meta:
- verbose_name = u"预警列表"
- verbose_name_plural = verbose_name
- ordering = ['-alarm_time']
- get_latest_by = 'alarm_time'
- # 测报灯短信配置表
- class Msg_Conf(models.Model):
- equip_id = models.ForeignKey(Equip)
- conf = models.TextField(u'短信配置', blank=True, null=True)
-
- upl_time = models.DateTimeField(u'上报时间', auto_now=True)
- class Meta:
- verbose_name = u"测报灯短信配置表"
- verbose_name_plural = verbose_name
- ordering = ['-upl_time']
- get_latest_by = 'upl_time'
- # 短信发送记录表:
- class Msg_Send(models.Model):
- mobile = models.CharField(u'手机号',max_length=20, blank=True)
- equip_id = models.CharField(u'设备号',max_length=20, blank=True)
- send_time = models.DateTimeField(u'发送时间', default=timezone.now)
- send_dec = models.CharField(u'发送内容',max_length=300, blank=True)
- result_desc = models.TextField(u'短信描述', blank=True, null=True)
- # def __str__(self):
- # return self.equip_name
- class Meta:
- verbose_name = u"短信发送记录表"
- verbose_name_plural = verbose_name
- ordering = ['-send_time']
- get_latest_by = 'send_time'
- # 气象站短信预警
- class QXZ_Alarm(models.Model):
- equip_id = models.ForeignKey(Equip)
- conf = models.TextField(u'短信配置', blank=True, null=True)
- tel = models.CharField(u'手机号',max_length=20, blank=True)
- upl_time = models.DateTimeField(u'上报时间', auto_now=True)
- class Meta:
- verbose_name = u"气象站短信预警"
- verbose_name_plural = verbose_name
- ordering = ['-upl_time']
- get_latest_by = 'upl_time'
- # 气象站短信预警记录
- class QXZ_Alarm_Log(models.Model):
- equip_id = models.ForeignKey(Equip)
- logs = models.TextField(u'短信反馈', blank=True, null=True)
- ekey = models.CharField(u'通道号',max_length=20, blank=True)
- info = models.CharField(u'内容',max_length=20, blank=True)
- upl_time = models.DateTimeField(u'上报时间', default=timezone.now)
- class Meta:
- verbose_name = u"气象站短信预警记录"
- verbose_name_plural = verbose_name
- ordering = ['-upl_time']
- get_latest_by = 'upl_time'
- # 气象站基础信息表
- class QXZ_Base_Info(models.Model):
- equip_id = models.ForeignKey(Equip)
- volt = models.CharField(u'电压', max_length=20, blank=True, null=True)
- rssi = models.CharField(u'信号强度', max_length=20, blank=True, null=True)
- iccid = models.CharField(u'设备卡号', max_length=50, blank=True, null=True)
- lng = models.CharField(u'经度', max_length=50, blank=True, null=True)
- lat = models.CharField(u'纬度', max_length=50, blank=True, null=True)
- led = models.CharField(u'led点阵屏', max_length=10, blank=True, null=True)
- ledinfo = models.CharField(u'led屏幕内容', max_length=100, blank=True, null=True)
- dver = models.CharField(u'设备版本号', max_length=100, blank=True, null=True)
- auto_locat = models.CharField(u'经纬度判断', max_length=50, default="1")
- # is_online = models.CharField(u'在线状态', max_length=5, blank=True,null=True)
- upl_time = models.DateTimeField(u'上报时间', auto_now=True)
- class Meta:
- verbose_name = u"气象站基础信息表"
- verbose_name_plural = verbose_name
- ordering = ['-upl_time']
- get_latest_by = 'upl_time'
- # 气象站基础信息表
- class QXZ_Info_Record(models.Model):
- equip_id = models.ForeignKey(Equip)
- volt = models.CharField(u'电压', max_length=20, blank=True, null=True)
- rssi = models.CharField(u'信号强度', max_length=20, blank=True, null=True)
- # is_online = models.CharField(u'在线状态', max_length=5, blank=True,null=True)
- upl_time = models.DateTimeField(u'上报时间', auto_now=True)
- class Meta:
- verbose_name = u"气象站信息历史"
- verbose_name_plural = verbose_name
- ordering = ['-upl_time']
- get_latest_by = 'upl_time'
- # 值#enum#通道
- # 新气象站配置表
- class QXZ_Conf(models.Model):
- equip_id = models.ForeignKey(Equip)
- e1 = models.CharField(u'通道1', max_length=30, blank=True, null=True)
- e2 = models.CharField(u'通道2', max_length=30, blank=True, null=True)
- e3 = models.CharField(u'通道3', max_length=30, blank=True, null=True)
- e4 = models.CharField(u'通道4', max_length=30, blank=True, null=True)
- e5 = models.CharField(u'通道5', max_length=30, blank=True, null=True)
- e6 = models.CharField(u'通道6', max_length=30, blank=True, null=True)
- e7 = models.CharField(u'通道7', max_length=30, blank=True, null=True)
- e8 = models.CharField(u'通道8', max_length=30, blank=True, null=True)
- e9 = models.CharField(u'通道9', max_length=30, blank=True, null=True)
- e10 = models.CharField(u'通道10', max_length=30, blank=True, null=True)
- e11 = models.CharField(u'通道11', max_length=30, blank=True, null=True)
- e12 = models.CharField(u'通道12', max_length=30, blank=True, null=True)
- e13 = models.CharField(u'通道13', max_length=30, blank=True, null=True)
- e14 = models.CharField(u'通道14', max_length=30, blank=True, null=True)
- e15 = models.CharField(u'通道15', max_length=30, blank=True, null=True)
- e16 = models.CharField(u'通道16', max_length=30, blank=True, null=True)
- e17 = models.CharField(u'通道17', max_length=30, blank=True, null=True)
- e18 = models.CharField(u'通道18', max_length=30, blank=True, null=True)
- e19 = models.CharField(u'通道19', max_length=30, blank=True, null=True)
- e20 = models.CharField(u'通道20', max_length=30, blank=True, null=True)
- e21 = models.CharField(u'通道21', max_length=30, blank=True, null=True)
- e22 = models.CharField(u'通道22', max_length=30, blank=True, null=True)
- e23 = models.CharField(u'通道23', max_length=30, blank=True, null=True)
- e24 = models.CharField(u'通道24', max_length=30, blank=True, null=True)
- e25 = models.CharField(u'通道25', max_length=30, blank=True, null=True)
- e26 = models.CharField(u'通道26', max_length=30, blank=True, null=True)
- e27 = models.CharField(u'通道27', max_length=30, blank=True, null=True)
- e28 = models.CharField(u'通道28', max_length=30, blank=True, null=True)
- e29 = models.CharField(u'通道29', max_length=30, blank=True, null=True)
- e30 = models.CharField(u'通道30', max_length=30, blank=True, null=True)
- upl_time = models.DateTimeField(u'数据上传时间', default=timezone.now)
- class Meta:
- verbose_name = u'气象站标题配置'
- verbose_name_plural = verbose_name
- ordering = ['-upl_time']
- get_latest_by = 'upl_time'
- # 值#enum#通道
- # 新气象站配置表
- class QXZ_Default_Conf(models.Model):
- equip_id = models.ForeignKey(Equip)
- e1 = models.CharField(u'通道1', max_length=30, blank=True, null=True)
- e2 = models.CharField(u'通道2', max_length=30, blank=True, null=True)
- e3 = models.CharField(u'通道3', max_length=30, blank=True, null=True)
- e4 = models.CharField(u'通道4', max_length=30, blank=True, null=True)
- e5 = models.CharField(u'通道5', max_length=30, blank=True, null=True)
- e6 = models.CharField(u'通道6', max_length=30, blank=True, null=True)
- e7 = models.CharField(u'通道7', max_length=30, blank=True, null=True)
- e8 = models.CharField(u'通道8', max_length=30, blank=True, null=True)
- e9 = models.CharField(u'通道9', max_length=30, blank=True, null=True)
- e10 = models.CharField(u'通道10', max_length=30, blank=True, null=True)
- e11 = models.CharField(u'通道11', max_length=30, blank=True, null=True)
- e12 = models.CharField(u'通道12', max_length=30, blank=True, null=True)
- e13 = models.CharField(u'通道13', max_length=30, blank=True, null=True)
- e14 = models.CharField(u'通道14', max_length=30, blank=True, null=True)
- e15 = models.CharField(u'通道15', max_length=30, blank=True, null=True)
- e16 = models.CharField(u'通道16', max_length=30, blank=True, null=True)
- e17 = models.CharField(u'通道17', max_length=30, blank=True, null=True)
- e18 = models.CharField(u'通道18', max_length=30, blank=True, null=True)
- e19 = models.CharField(u'通道19', max_length=30, blank=True, null=True)
- e20 = models.CharField(u'通道20', max_length=30, blank=True, null=True)
- e21 = models.CharField(u'通道21', max_length=30, blank=True, null=True)
- e22 = models.CharField(u'通道22', max_length=30, blank=True, null=True)
- e23 = models.CharField(u'通道23', max_length=30, blank=True, null=True)
- e24 = models.CharField(u'通道24', max_length=30, blank=True, null=True)
- e25 = models.CharField(u'通道25', max_length=30, blank=True, null=True)
- e26 = models.CharField(u'通道26', max_length=30, blank=True, null=True)
- e27 = models.CharField(u'通道27', max_length=30, blank=True, null=True)
- e28 = models.CharField(u'通道28', max_length=30, blank=True, null=True)
- e29 = models.CharField(u'通道29', max_length=30, blank=True, null=True)
- e30 = models.CharField(u'通道30', max_length=30, blank=True, null=True)
- upl_time = models.DateTimeField(u'数据上传时间', default=timezone.now)
- class Meta:
- verbose_name = u'气象站标题默认配置'
- verbose_name_plural = verbose_name
- ordering = ['-upl_time']
- get_latest_by = 'upl_time'
- # 值#enum#通道
- # 新气象站状态记录:
- class QXZstatus_New(models.Model):
- equip_id = models.ForeignKey(Equip)
- is_online = models.CharField(u'在线状态', max_length=5, blank=True,null=True)
- off_time = models.DateTimeField(u'离线时间', blank=True,null=True)
- upl_time = models.DateTimeField(u'数据上传时间', default=timezone.now)
- e1 = models.CharField(u'通道1', max_length=30, blank=True, null=True)
- e2 = models.CharField(u'通道2', max_length=30, blank=True, null=True)
- e3 = models.CharField(u'通道3', max_length=30, blank=True, null=True)
- e4 = models.CharField(u'通道4', max_length=30, blank=True, null=True)
- e5 = models.CharField(u'通道5', max_length=30, blank=True, null=True)
- e6 = models.CharField(u'通道6', max_length=30, blank=True, null=True)
- e7 = models.CharField(u'通道7', max_length=30, blank=True, null=True)
- e8 = models.CharField(u'通道8', max_length=30, blank=True, null=True)
- e9 = models.CharField(u'通道9', max_length=30, blank=True, null=True)
- e10 = models.CharField(u'通道10', max_length=30, blank=True, null=True)
- e11 = models.CharField(u'通道11', max_length=30, blank=True, null=True)
- e12 = models.CharField(u'通道12', max_length=30, blank=True, null=True)
- e13 = models.CharField(u'通道13', max_length=30, blank=True, null=True)
- e14 = models.CharField(u'通道14', max_length=30, blank=True, null=True)
- e15 = models.CharField(u'通道15', max_length=30, blank=True, null=True)
- e16 = models.CharField(u'通道16', max_length=30, blank=True, null=True)
- e17 = models.CharField(u'通道17', max_length=30, blank=True, null=True)
- e18 = models.CharField(u'通道18', max_length=30, blank=True, null=True)
- e19 = models.CharField(u'通道19', max_length=30, blank=True, null=True)
- e20 = models.CharField(u'通道20', max_length=30, blank=True, null=True)
- e21 = models.CharField(u'通道21', max_length=30, blank=True, null=True)
- e22 = models.CharField(u'通道22', max_length=30, blank=True, null=True)
- e23 = models.CharField(u'通道23', max_length=30, blank=True, null=True)
- e24 = models.CharField(u'通道24', max_length=30, blank=True, null=True)
- e25 = models.CharField(u'通道25', max_length=30, blank=True, null=True)
- e26 = models.CharField(u'通道26', max_length=30, blank=True, null=True)
- e27 = models.CharField(u'通道27', max_length=30, blank=True, null=True)
- e28 = models.CharField(u'通道28', max_length=30, blank=True, null=True)
- e29 = models.CharField(u'通道29', max_length=30, blank=True, null=True)
- e30 = models.CharField(u'通道30', max_length=30, blank=True, null=True)
- lng = models.CharField(u'经度', max_length=50, blank=True)
- lat = models.CharField(u'维度', max_length=50, blank=True)
- qxz_picture = models.ImageField(u'气象站图片', upload_to="qxz_photo/", default="qxz_photo/default.png")
- interval = models.CharField(u'设备数据上传时间间隔', max_length=30, blank=True, null=True)
- class Meta:
- verbose_name = u'气象站-状态表-新'
- verbose_name_plural = verbose_name
- ordering = ['-equip_id__equip_add_time']
- get_latest_by = 'equip_id__equip_add_time'
- # 新气象站数据记录:
- # 新气象站全部数据记录
- class QXZdata_New(models.Model):
- equip_id = models.ForeignKey(Equip)
- upl_time = models.DateTimeField(u'数据上传时间', default=timezone.now)
- e1 = models.CharField(u'通道1', max_length=30, blank=True, null=True)
- e2 = models.CharField(u'通道2', max_length=30, blank=True, null=True)
- e3 = models.CharField(u'通道3', max_length=30, blank=True, null=True)
- e4 = models.CharField(u'通道4', max_length=30, blank=True, null=True)
- e5 = models.CharField(u'通道5', max_length=30, blank=True, null=True)
- e6 = models.CharField(u'通道6', max_length=30, blank=True, null=True)
- e7 = models.CharField(u'通道7', max_length=30, blank=True, null=True)
- e8 = models.CharField(u'通道8', max_length=30, blank=True, null=True)
- e9 = models.CharField(u'通道9', max_length=30, blank=True, null=True)
- e10 = models.CharField(u'通道10', max_length=30, blank=True, null=True)
- e11 = models.CharField(u'通道11', max_length=30, blank=True, null=True)
- e12 = models.CharField(u'通道12', max_length=30, blank=True, null=True)
- e13 = models.CharField(u'通道13', max_length=30, blank=True, null=True)
- e14 = models.CharField(u'通道14', max_length=30, blank=True, null=True)
- e15 = models.CharField(u'通道15', max_length=30, blank=True, null=True)
- e16 = models.CharField(u'通道16', max_length=30, blank=True, null=True)
- e17 = models.CharField(u'通道17', max_length=30, blank=True, null=True)
- e18 = models.CharField(u'通道18', max_length=30, blank=True, null=True)
- e19 = models.CharField(u'通道19', max_length=30, blank=True, null=True)
- e20 = models.CharField(u'通道20', max_length=30, blank=True, null=True)
- e21 = models.CharField(u'通道21', max_length=30, blank=True, null=True)
- e22 = models.CharField(u'通道22', max_length=30, blank=True, null=True)
- e23 = models.CharField(u'通道23', max_length=30, blank=True, null=True)
- e24 = models.CharField(u'通道24', max_length=30, blank=True, null=True)
- e25 = models.CharField(u'通道25', max_length=30, blank=True, null=True)
- e26 = models.CharField(u'通道26', max_length=30, blank=True, null=True)
- e27 = models.CharField(u'通道27', max_length=30, blank=True, null=True)
- e28 = models.CharField(u'通道28', max_length=30, blank=True, null=True)
- e29 = models.CharField(u'通道29', max_length=30, blank=True, null=True)
- e30 = models.CharField(u'通道30', max_length=30, blank=True, null=True)
- class Meta:
- verbose_name = u'气象站-数据表-新'
- verbose_name_plural = verbose_name
- ordering = ['-upl_time']
- get_latest_by = 'upl_time'
- # 气象站状态:
- # 气象站最新数据记录
- class QXZstatus(models.Model):
- equip_id = models.ForeignKey(Equip)
- #auto_now=True:媒体更新状态表时,随之更新上报时间!!!
- upl_time = models.DateTimeField(u'上报时间', auto_now=True)
- qxz_status = models.TextField(u'气象站状态', blank=True, null=True)
- lng = models.CharField(u'经度', max_length=50, blank=True)
- lat = models.CharField(u'维度', max_length=50, blank=True)
- qxz_picture = models.ImageField(u'气象站图片', upload_to="qxz_photo/", default="qxz_photo/default.png")
- # qxz_picture = models.CharField(u'气象站图片', max_length=200, default="qxz_photo/default.png")
- class Meta:
- verbose_name = u"气象站-状态表"
- verbose_name_plural = verbose_name
- ordering = ['-equip_id__equip_add_time']
- get_latest_by = 'equip_id__equip_add_time'
- # 气象站数据记录:
- # 气象站全部数据记录
- class QXZdata(models.Model):
- equip_id = models.ForeignKey(Equip)
- upl_time = models.DateTimeField(u'数据上传时间', default=timezone.now)
- qxz_data = models.TextField(u'气象站数据', blank=True, null=True)
- class Meta:
- verbose_name = u'气象站-数据表'
- verbose_name_plural = verbose_name
- ordering = ['-upl_time']
- get_latest_by = 'upl_time'
- # 气象站开关表
- class QXZswitchstatus(models.Model):
- equip_id = models.ForeignKey(Equip)
- upl_time = models.DateTimeField(u'数据上传时间', default=timezone.now)
- qxz_switch = models.TextField(u'气象站开关', blank=True, null=True)
- class Meta:
- verbose_name = u'气象站-开关表'
- verbose_name_plural = verbose_name
- ordering = ['-upl_time']
- get_latest_by = 'upl_time'
- # 气象站开关配置表
- class QXZswitchdata(models.Model):
- equip_id = models.ForeignKey(Equip)
- upl_time = models.DateTimeField(u'数据上传时间', default=timezone.now)
- qxz_switch_data = models.TextField(u'气象站开关名字', blank=True, null=True)
- class Meta:
- verbose_name = u'气象站-开关配置表'
- verbose_name_plural = verbose_name
- ordering = ['-upl_time']
- get_latest_by = 'upl_time'
- # 气象站阈值表
- class QXZAutoswitch(models.Model):
- equip_id = models.ForeignKey(Equip)
- upl_time = models.DateTimeField(u'数据上传时间', default=timezone.now)
- qxz_auto = models.TextField(u'气象站阈值', blank=True, null=True)
- class Meta:
- verbose_name = u'气象站-阈值表'
- verbose_name_plural = verbose_name
- ordering = ['-upl_time']
- get_latest_by = 'upl_time'
- # 气象站开关定时表
- class QXZTimingswitch(models.Model):
- equip_id = models.ForeignKey(Equip)
- upl_time = models.DateTimeField(u'数据上传时间', default=timezone.now)
- qxz_timing = models.TextField(u'气象站开关定时', blank=True, null=True)
- class Meta:
- verbose_name = u'气象站-定时表'
- verbose_name_plural = verbose_name
- ordering = ['-upl_time']
- get_latest_by = 'upl_time'
- # 孢子仪状态:
- # 孢子仪最新数据记录
- class BZYstatus(models.Model):
- equip_id = models.ForeignKey(Equip)
- #auto_now=True:媒体更新状态表时,随之更新上报时间!!!
- upl_time = models.DateTimeField(u'上报时间', auto_now=True)
- bzy_status = models.TextField(u'孢子仪状态', blank=True, null=True)
- is_online = models.CharField(u'在线状态', max_length=5, blank=True,null=True)
- off_time = models.DateTimeField(u'离线时间', blank=True,null=True)
- netconf = models.TextField(u'孢子仪地址', blank=True, null=True)
- glass = models.TextField(u'载玻片更换时间', null=True, blank=True)
- liquid = models.TextField(u'培养液更换时间', null=True, blank=True)
- # 绑定sim卡
- simid = models.CharField(u'设备sim卡', max_length=50, blank=True, null=True)
- class Meta:
- verbose_name = u"孢子仪-状态表"
- verbose_name_plural = verbose_name
- ordering = ['-equip_id__equip_add_time']
- get_latest_by = 'equip_id__equip_add_time'
- # 孢子仪数据记录:
- # 孢子仪全部数据记录
- class BZYdata(models.Model):
- equip_id = models.ForeignKey(Equip)
- upl_time = models.DateTimeField(u'数据上传时间', default=timezone.now)
- bzy_data = models.TextField(u'孢子仪数据', blank=True, null=True)
- class Meta:
- verbose_name = u'孢子仪-数据表'
- verbose_name_plural = verbose_name
- ordering = ['-upl_time']
- get_latest_by = 'upl_time'
- # 孢子仪照片记录:
- class BZYphoto(models.Model):
- equip_id = models.ForeignKey(Equip, blank=True, null=True, verbose_name=u'设备ID')
- upl_time = models.DateTimeField(u'上传时间', default=timezone.now)
- addr = models.CharField(u'照片路径', max_length=200, blank=True, null=True)
- # 用户自定义添加:孢子识别结果
- describe = models.TextField(u'描述', blank=True, null=True)
- def __str__(self):
- return self.addr
- class Meta:
- verbose_name = u'孢子仪-照片列表'
- verbose_name_plural = verbose_name
- ordering = ['-upl_time']
- get_latest_by = 'upl_time'
- # 设备sim卡信息
- class Equip_SimInfo(models.Model):
- equip_id = models.ForeignKey(Equip, blank=True, null=True, verbose_name=u'设备ID')
- equip_name = models.CharField(u'设备名称', max_length=100, blank=True, null=True)
- equip_type = models.CharField(u'设备类型', max_length=10, blank=True, null=True)
- iccid = models.CharField(u'iccid', max_length=30, blank=True, null=True)
- msisdn = models.CharField(u'msisdn', max_length=30, blank=True, null=True)
- imsi = models.CharField(u'imsi', max_length=30, blank=True, null=True)
- sp_code = models.CharField(u'短信端口', max_length=30, blank=True, null=True)
- carrier = models.CharField(u'运营商', max_length=30, blank=True, null=True)
- data_plan = models.CharField(u'套餐大小', max_length=20, blank=True, null=True)
- data_usage = models.CharField(u'当月用量', max_length=20, blank=True, null=True)
- account_status = models.CharField(u'卡状态', max_length=20, blank=True, null=True)
- expiry_date = models.CharField(u'计费结束日期', max_length=20, blank=True, null=True)
- active = models.CharField(u'激活状态', max_length=10, blank=True, null=True)
- test_valid_date = models.CharField(u'测试期起始日期', max_length=20, blank=True, null=True)
- silent_valid_date = models.CharField(u'沉默期起始日期', max_length=20, blank=True, null=True)
- test_used_data_usage = models.CharField(u'测试期已用流量', max_length=20, blank=True, null=True)
- active_date = models.CharField(u'激活日期', max_length=20, blank=True, null=True)
- data_balance = models.CharField(u'剩余流量,单位M', max_length=20, blank=True, null=True)
- outbound_date = models.CharField(u'出库日期', max_length=20, blank=True, null=True)
- support_sms = models.CharField(u'是否支持短信', max_length=10, blank=True, null=True)
- sim_alarm = models.TextField(u'sim卡提示配置', blank=True, null=True)
- upl_time = models.DateTimeField(u'上传时间', default=timezone.now)
- def __str__(self):
- return self.equip_id.equip_id
- class Meta:
- verbose_name = u'设备sim卡信息表'
- verbose_name_plural = verbose_name
- ordering = ['-upl_time']
- get_latest_by = 'upl_time'
- # 韩英磊定制版判定孢子是否存在
- class Spore_Exist(models.Model):
- equip_id = models.CharField(u'设备ID', max_length=50, blank=True)
- upl_time = models.DateTimeField(u'上传时间', default=timezone.now)
- is_exist = models.BooleanField(u'是否存在孢子',default=False)
- def __str__(self):
- return self.equip_id
- class Meta:
- verbose_name = u'孢子仪-孢子存在表'
- verbose_name_plural = verbose_name
- ordering = ['-upl_time']
- get_latest_by = 'upl_time'
- # APP版本号
- class App_Edition(models.Model):
- edition_num = models.CharField(u'版本号', max_length=50, blank=True)
- edition_desc = models.CharField(u'更新描述', max_length=50, blank=True)
- upl_time = models.DateTimeField(u'更新时间', default=timezone.now)
-
- def __str__(self):
- return self.edition_num
- class Meta:
- verbose_name = u'APP版本描述'
- verbose_name_plural = verbose_name
- ordering = ['-upl_time']
- get_latest_by = 'upl_time'
- # 依科曼性诱状态表
- class Trapstatus(models.Model):
- equip_id = models.ForeignKey(Equip)
- addr = models.CharField(u'设备位置', max_length=50, blank=True, null=True)
- tem = models.CharField(u'温度', max_length=20, blank=True, null=True)
- hum = models.CharField(u'湿度', max_length=20, blank=True, null=True)
- pest = models.CharField(u'害虫名称', max_length=20, blank=True, null=True)
- pestnum = models.CharField(u'害虫数量', max_length=20, blank=True, null=True)
- upl_time = models.DateTimeField(u'上传时间', blank=True, null=True)
- class Meta:
- verbose_name = u'性诱状态表'
- verbose_name_plural = verbose_name
- ordering = ['-equip_id__equip_add_time']
- get_latest_by = 'equip_id__equip_add_time'
- # 依科曼性诱数据表
- class Trapdata(models.Model):
- equip_id = models.ForeignKey(Equip)
- addr = models.CharField(u'设备位置', max_length=50, blank=True, null=True)
- tem = models.CharField(u'温度', max_length=20, blank=True, null=True)
- hum = models.CharField(u'湿度', max_length=20, blank=True, null=True)
- pest = models.CharField(u'害虫名称', max_length=20, blank=True, null=True)
- pestnum = models.CharField(u'害虫数量', max_length=20, blank=True, null=True)
- upl_time = models.DateTimeField(u'上传时间', blank=True, null=True)
- class Meta:
- verbose_name = u'性诱数据表'
- verbose_name_plural = verbose_name
- ordering = ['-upl_time']
- get_latest_by = 'upl_time'
- # 性诱设备照片记录:
- class Trapphoto(models.Model):
- equip_id = models.ForeignKey(Equip, blank=True, null=True, verbose_name=u'设备ID')
- upl_time = models.DateTimeField(u'上传时间', default=timezone.now)
- addr = models.CharField(u'照片路径', max_length=200, blank=True, null=True)
-
- def __str__(self):
- return self.addr
- class Meta:
- verbose_name = u'性诱设备照片'
- verbose_name_plural = verbose_name
- ordering = ['-upl_time']
- get_latest_by = 'upl_time'
- # VR展示表
- class VR_Photo(models.Model):
- user = models.ForeignKey(MyUser, blank=True, null=True, verbose_name=u'所属用户')
- name = models.CharField(u'基地名称', max_length=50, blank=True, null=True)
- display = models.CharField(u'缩略图', max_length=200, blank=True, null=True)
- photo = models.CharField(u'VR展示图', blank=True, null=True, max_length=200)
- upl_time = models.DateTimeField(u'上传时间', default=timezone.now)
- class Meta:
- verbose_name = u'VR-照片表'
- verbose_name_plural = verbose_name
- ordering = ['-upl_time']
- get_latest_by = 'upl_time'
-
- # APP轮播图
- class APP_Img(models.Model):
- user = models.ForeignKey(MyUser, blank=True, null=True, verbose_name=u'所属用户')
- img = models.CharField(u'轮播图', blank=True, null=True, max_length=200)
- upl_time = models.DateTimeField(u'上传时间', default=timezone.now)
- class Meta:
- verbose_name = u'APP-轮播图'
- verbose_name_plural = verbose_name
- ordering = ['-upl_time']
- get_latest_by = 'upl_time'
- #数据转发数据、图片表
- class Equip_Forward(models.Model):
- equip_id = models.CharField(u"设备号",blank=True, null=True, max_length=25)
- # equip_type = models.CharField(u"设备类型",blank=True, null=True, max_length=5)
- equip_data_url = models.TextField(u"设备数据转发url",blank=True, null=True)
- equip_img_url = models.TextField(u"设备图片转发url",blank=True, null=True)
- equip_img_between = models.CharField(u"转发图片进行区分",blank=True, null=True, max_length=10)
- equip_data_between = models.CharField(u"转发数据进行区分",blank=True, null=True, max_length=10)
- # 1----------- 旧的数据转发地址
- # 2----------- 新的数据转发地址
- #equip_img_between
- # 1----------- 旧的图片转发地址
- # 2----------- 新的图片转发地址
- class Meta:
- verbose_name = u"数据转发表"
- verbose_name_plural = verbose_name
- #测报员表
- class User_Reporter(models.Model):
- user_id = models.ForeignKey(MyUser,verbose_name = "用户",null = True,blank = True)
- name = models.CharField(max_length =32, verbose_name = "测报员名字", null = True , blank = True)
- password = models.CharField(max_length =150, verbose_name = "密码", null = True , blank = True)
- phone = models.CharField(max_length =15, verbose_name = "手机号码", null = True , blank = True,default=None)
- photo = models.ImageField(u'用户头像', upload_to="ce_cuser_head/",null = True , blank = True, default="ce_cuser_head/default.png")
- time = models.DateTimeField(u'添加时间', default=timezone.now)
- addr = models.CharField(max_length =64, verbose_name = "地点", null = True , blank = True,default=None)
- class Meta:
- db_table = "Pest_User_Reporter"
- verbose_name = "病虫害测报员数据表"
- verbose_name_plural = verbose_name
- ordering = ['-time']
- get_latest_by = 'time'
-
- #全国省市县
- class Address_Province(models.Model):
- '''省市县'''
- code = models.CharField(max_length = 20, verbose_name = "编码", null = True, blank = True)
- name = models.CharField(max_length = 100, verbose_name = "名称", null = False, blank = False)
- parent_code = models.CharField(max_length = 100, verbose_name = "上级名称", null = True, blank = True)
- class Meta:
- db_table = "Pest_City_Address"
- verbose_name = "中国省市县"
- verbose_name_plural = verbose_name
- def __str__(self):
- return self.name
- #月份
- class User_Month(models.Model):
- month = models.CharField(max_length = 20, verbose_name = "月份", null = True, blank = True)
- addr_id = models.ForeignKey(Address_Province, verbose_name = "地区", null = True, blank = True)
- class Meta:
- db_table = "Pest_User_Month"
- verbose_name = "病虫害月份表"
- verbose_name_plural = verbose_name
- #病虫害
- class Pest_Harm_New(models.Model):
- pest = models.CharField(max_length = 20, verbose_name = "病虫害种类", null = False, blank = False)
- pest_sort = models.CharField(max_length = 10, verbose_name = "病虫害区分", null = False, blank = False)
- pest_name = models.CharField(max_length = 100, verbose_name = "病虫害名字", null = True, blank = True)
- month_id = models.ForeignKey(User_Month,verbose_name = "月份", null = True, blank = True)
- user_id = models.ForeignKey(User_Reporter,verbose_name = "用户", null = True, blank = True)
- crop_sort = models.CharField(max_length = 20, verbose_name = "作物分类", null = True, blank = True)
-
- class Meta:
- db_table = "Pest_Harm_New"
- verbose_name = "病虫害种类数据表新"
- verbose_name_plural = verbose_name
- #采集人数据表
- class User_Data_Table_New(models.Model):
- harm_id = models.ForeignKey(Pest_Harm_New,verbose_name = "病虫害", null = True, blank = True)
- user_id = models.ForeignKey(User_Reporter,verbose_name = "采集人", null = True, blank = True)
- upl_time = models.DateTimeField(verbose_name = '创建时间', default=timezone.now)
- lng = models.CharField(u'经度', max_length=32, blank=True, null=True)
- lat = models.CharField(u'维度', max_length=32, blank=True, null=True)
- growth_stages = models.CharField(max_length = 32, verbose_name = '生育期', null = True, blank = True)
- addr_photo = models.CharField(u'病虫害照片路径', max_length=200, blank=True, null=True)
- area = models.CharField(max_length = 32, verbose_name = '统计面积', null = True, blank = True)
- pestname = models.CharField(max_length =500, verbose_name = "病害值", null = True , blank = True)
- cens_method = models.CharField(max_length =32, verbose_name = "统计方法", null = True , blank = True)
- defa = models.CharField(max_length =5, verbose_name = "默认选中", null = True , blank = True,default=0)
- class Meta:
- db_table = "Pest_User_Data_Table_New"
- verbose_name = "病虫害统计数据表新"
- verbose_name_plural = verbose_name
- ordering = ['-upl_time']
- get_latest_by = 'upl_time'
- #昆虫分类(以昆虫纲开始分,目、亚目、属)(弃用)
- class Insecta_Sort(models.Model):
- code = models.CharField(max_length =20, verbose_name = "编码", null = True , blank = True, default=None)
- sort = models.CharField(max_length =50, verbose_name = "分类", null = True , blank = True,default=None)
- sort_code = models.CharField(max_length = 50, verbose_name = "上级分类", null = True, blank = True,default=None)
- class Meta:
- db_table = "Pest_Insecta_Sort"
- verbose_name = "病虫害分类表(虫害)"
- verbose_name_plural = verbose_name
- #昆虫种类和作物种类(弃用)
- class Insect_Plant(models.Model):
- ids = models.ForeignKey(MyUser,verbose_name = "用户",null = True,blank = True)
- reporter_id = models.ForeignKey(User_Reporter,verbose_name = "测报员",null = True,blank = True)
- insect_type = models.CharField(max_length =32, verbose_name = "虫害种类名称", null = True , blank = True, default=None)
- plant_type = models.CharField(max_length =32, verbose_name = "作物种类名称", null = True , blank = True,default=None)
- time = models.DateTimeField(u'添加时间', default=timezone.now)
- class Meta:
- db_table = "Pest_Insect_Plant"
- verbose_name = "病虫害种类表"
- verbose_name_plural = verbose_name
- ordering = ['-time']
- get_latest_by = 'time'
-
- #昆虫种类和作物种类病害级别表(弃用)
- class Insect_Plant_Leve(models.Model):
- inid = models.ForeignKey(Insect_Plant,verbose_name = "种类",null = True,blank = True)
- plant_name = models.CharField(max_length =32, verbose_name = "作物病害名", null = True , blank = True,default=None)
- insect_name = models.CharField(max_length =32, verbose_name = "虫病害名", null = True , blank = True,default=None)
- time = models.DateTimeField(u'添加时间', default=timezone.now)
- class Meta:
- db_table = "Pest_Insect_Plant_Leve"
- verbose_name = "病虫害级别表"
- verbose_name_plural = verbose_name
- ordering = ['-time']
- get_latest_by = 'time'
- #采集人数据表(弃用)
- class User_Data_Table(models.Model):
- user_id=models.ForeignKey(MyUser,verbose_name = "用户",null = True,blank = True)
- reporter_id = models.ForeignKey(User_Reporter,verbose_name = "测报员",null = True,blank = True)
- time = models.DateTimeField(verbose_name = '创建时间', default=timezone.now)
- user_city = models.CharField(u'用户详情地址', max_length=100, blank=True,null = True)
- lng = models.CharField(u'经度', max_length=32, blank=True)
- lat = models.CharField(u'维度', max_length=32, blank=True)
- addr_photo = models.CharField(u'病虫害照片路径', max_length=200, blank=True, null=True)
- insect_sort = models.CharField(max_length = 120, verbose_name = '所属分类',blank=True,null = True, default=None)
- names = models.CharField(max_length = 32, verbose_name = '病虫害名字',blank=True,null = True)
- area = models.CharField(max_length = 32, verbose_name = '统计面积', null = True, blank = True)
- pestname = models.CharField(max_length =500, verbose_name = "病害值", null = True , blank = True)
- statistical = models.CharField(max_length =32, verbose_name = "统计种类", null = True , blank = True)
- statistical_method=models.CharField(max_length =32, verbose_name = "统计方法", null = True , blank = True)
-
-
- class Meta:
- db_table = "Pest_User_Data_Table"
- verbose_name = "病虫害统计数据表"
- verbose_name_plural = verbose_name
- ordering = ['-time']
- get_latest_by = 'time'
-
- def __str__(self):
- return self.reporter_id.name
- #病虫害app升级
- class Insect_Edition(models.Model):
- app_name = models.CharField(u'app版本名称', max_length=50, blank=True)
- app_num = models.CharField(u'版本号', max_length=50, blank=True)
- app_desc = models.CharField(u'更新描述', max_length=50, blank=True)
- upl_time = models.DateTimeField(u'更新时间', default=timezone.now)
-
- def __str__(self):
- return self.app_name
- class Meta:
- db_table = "Pest_Insect_Edition"
- verbose_name = u'病虫害APP版本描述'
- verbose_name_plural = verbose_name
- ordering = ['-upl_time']
- get_latest_by = 'upl_time'
- #病虫害知识库
- class Diseases(models.Model):
- time = models.DateTimeField(u'添加时间', default=timezone.now)
- course = models.CharField(max_length=100, verbose_name="所属科目", null=True, blank=True, default=None)
- name = models.CharField(max_length=32, verbose_name="病虫害名",null=True, blank=True, default=None)
- # addr = models.CharField(max_length =32, verbose_name = "地点", null = True , blank = True,default=None)
- # img = models.ImageField(u'用户上传识别图片',upload_to="diseases_photos",max_length = 200, default=None,null = True , blank = True)
- img_urls = models.CharField(u'识别出来的图片', max_length=300, null=True, blank=True, default=None)
- prevention = models.TextField(u'防止方法', max_length=5000, null=True, blank=True, default=None)
- # msg = models.CharField(u'识别编号',max_length =16)
- ret = models.CharField(verbose_name="病虫害", max_length=10, blank=True, null=True)
- class Meta:
- db_table = "Pest_Diseases_table"
- verbose_name = "病虫害知识库表"
- verbose_name_plural = verbose_name
-
- #虫害识别保存
- class App_Insect(models.Model):
- userid = models.ForeignKey(MyUser, verbose_name='用户',null = True,blank = True)
- reporter_id = models.ForeignKey(User_Reporter,verbose_name = "测报员",null = True,blank = True)
- time = models.DateTimeField(u'添加时间', default=timezone.now)
- course = models.CharField(max_length=100, verbose_name="所属科目", null=True, blank=True, default=None)
- name = models.CharField(max_length=32, verbose_name="昆虫名",null=True, blank=True, default=None)
- addr = models.CharField(max_length =100, verbose_name = "识别地点", null = True , blank = True,default=None)
- img = models.ImageField(u'用户上传昆虫识别图片', upload_to="insect_photos/",max_length=100, default=None, null=True, blank=True)
- img_urls = models.CharField(u'识别出来的图片', max_length=300, null=True, blank=True, default=None)
- prevention = models.TextField(u'防止方法', max_length=5000, null=True, blank=True, default=None)
- lng = models.CharField(u'经度', max_length=32, blank=True)
- lat = models.CharField(u'维度', max_length=32, blank=True)
- # msg = models.CharField(u'识别编号',max_length =16)
- class Meta:
- db_table = "Pest_Insect_Table"
- verbose_name = "病虫害害虫识别表"
- verbose_name_plural = verbose_name
- ordering = ['-time']
- get_latest_by = 'time'
- #植物识别表
- class App_Plant(models.Model):
- userid = models.ForeignKey(MyUser, verbose_name='用户',null = True,blank = True)
- reporter_id = models.ForeignKey(User_Reporter,verbose_name = "测报员",null = True,blank = True)
- time = models.DateTimeField(u'添加时间', default=timezone.now)
- course = models.CharField(max_length=100, verbose_name="所属科目", null=True, blank=True, default=None)
- name = models.CharField(max_length=32, verbose_name="作物病害名", null=True, blank=True, default=None)
- addr = models.CharField(max_length =100, verbose_name = "识别地点", null = True , blank = True,default=None)
- img = models.ImageField(u'用户上传作物识别图片', upload_to="plant_photos/",max_length=100, default=None, null=True, blank=True)
- img_urls = models.CharField(u'识别出来的图片', max_length=300, null=True, blank=True, default=None)
- prevention = models.TextField(u'防止方法', max_length=5000, null=True, blank=True, default=None)
- lng = models.CharField(u'经度', max_length=32, blank=True)
- lat = models.CharField(u'维度', max_length=32, blank=True)
- # msg = models.CharField(u'识别编号',max_length =16)
-
- class Meta:
- db_table = "Pest_Plant_Table"
- verbose_name = "病虫害作物识别表"
- verbose_name_plural = verbose_name
- ordering = ['-time']
- get_latest_by = 'time'
- #用户反馈 1联系 2不联系
- class Feedback(models.Model):
- time = models.DateTimeField(u'添加时间', default=timezone.now)
- phone = models.CharField(max_length=32, verbose_name="电话号码", null=True, blank=True, default=None)
- name = models.CharField(max_length=32, verbose_name="用户名", null=True, blank=True, default=None)
- proposal = models.TextField(max_length =500, verbose_name = "用户提出的建议", null = True , blank = True,default=None)
- count = models.TextField(max_length =500, verbose_name = "需要改进的地方", null = True , blank = True,default=None)
- store = models.CharField(verbose_name="是否联系用户",max_length=6, blank=True, default=0, null=True)
-
- class Meta:
- db_table = "Pest_Feedback"
- verbose_name = "病虫害用户反馈"
- verbose_name_plural = verbose_name
- ordering = ['-time']
- get_latest_by = 'time'
-
- #加密
- class Encryption(models.Model):
- time = models.DateTimeField(u'添加时间', default=timezone.now)
- meid = models.CharField(max_length=54, verbose_name="手机唯一标识", null=True, blank=True, default=None)
- cipher = models.CharField(max_length=54, verbose_name="秘钥", null=True, blank=True, default=None)
- # mark = models.CharField(max_length=10, verbose_name="标识", null=True, blank=True, default=None)
- class Meta:
- db_table = "Pest_Encryption"
- verbose_name = "病虫害登录加密表"
- verbose_name_plural = verbose_name
- #购买app用户列表
- class Purchase(models.Model):
- time = models.DateTimeField(u'添加时间', default=timezone.now)
- userid = models.ForeignKey(MyUser,verbose_name="购买用户", null=True, blank=True)
- class Meta:
- db_table = "Pest_Purchase"
- verbose_name = "病虫害app购买表"
- verbose_name_plural = verbose_name
|