当我添加check\u stats()方法时管理.py挂起。within_range()和light_check()函数是从自定义库导入的。我尝试过用详细的方式运行syncdb,但没有收到任何错误。我无法用ctrl+c停止进程,必须关闭终端窗口。在此之后,我再也不能运行任何命令管理.py不会有同样的问题。我在另一个文件中有另一个函数做同样的事情,但是我想用一个方法来代替。我已经删除了数据库,并尝试再次同步,甚至没有数据库被创建,除非我删除该方法。你知道吗
class PlotZone(models.Model):
user = models.ForeignKey(User)
name = models.CharField(max_length=40, blank=True)
plot_comments = models.CharField(max_length=500, blank=True)
current_temp = models.IntegerField(default=0)
current_humid = models.IntegerField(default=0)
light_start = models.TimeField(blank=True, null=True)
light_stop = models.TimeField(blank=True, null=True)
light_status = models.BooleanField(default=True)
goal_temp = models.IntegerField(default=0)
goal_humid = models.IntegerField(default=0)
humid_alert = models.NullBooleanField(default=False)
temp_alert = models.NullBooleanField(default=False)
light_alert = models.NullBooleanField(default=False)
alert_status = models.NullBooleanField(default=False)
humid_fail_limit = models.IntegerField(default=0)
temp_fail_limit = models.IntegerField(default=0)
def check_stats(self):
if not within_range(self.goal_temp, self.current_temp, self.temp_fail_limit):
self.alert_status = True
elif not within_range(self.goal_humid, self.current_humid, self.humid_fail_limit):
self.alert_status = True
elif not light_check(self, datetime.time()):
self.alert_status = True
def within_range(goal, current, fail_limit):
goal = int(goal*10)
current = int(current*10)
fail_limit = int(fail_limit*10)
lower_range = range((goal-fail_limit), goal+1)
upper_range = range(goal, (goal+(fail_limit+1)))
if (current in lower_range) or (current in upper_range):
return True
else:
return False
目前没有回答
相关问题 更多 >
编程相关推荐