TypeError:unorderable类型:NoneType()< = datetime.datetime()

时间:2016-12-21 10:53:40

标签: python django datetime

我的django应用live_fromlive_to中有字段,这些字段不是必需的。当这个字段为空时,我的metod会出错:

字段:

live_from = models.DateTimeField('live from', blank=True, null=True)

live_to = models.DateTimeField('live to', blank=True, null=True)

这是我的方法:

def is_live(self):
    return (self.live_from <= timezone.now()) and (self.live_to >= timezone.now())

错误:TypeError: unorderable types: NoneType() <= datetime.datetime()

2 个答案:

答案 0 :(得分:2)

我认为您尝试将NonType与当前时间进行比较,首先应该在值为空时返回False,例如:

def is_live(self):
    if self.live_from is None or self.live_to is None :
        return False
    return (self.live_from <= timezone.now()) and (self.live_to >= timezone.now())

答案 1 :(得分:1)

鉴于您的模型,这将是一个很好的定义。

def is_live(self):
    # first, check the inexpensive precondition, before comparing date fields
    return ((None not in [self.live_from, self.live_to]) and 
            self.live_from <= timezone.now() and self.live_to >= timezone.now())