Django在向mod添加方法后不会同步DB

2024-04-29 15:19:54 发布

您现在位置:Python中文网/ 问答频道 /正文

当我添加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

Tags: selftruedefaultmodelsstatusrangealertcurrent