我的django应用live_from
和live_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()
答案 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())