| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725 |
- # -*- 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
- 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"),
- ("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)
- # 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.CharField(u"设备数据转发url",blank=True, null=True, max_length=100)
- equip_img_url = models.CharField(u"设备图片转发url",blank=True, null=True, max_length=100)
- 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
|