我正在从API中获取DateTimeField,格式为"2016-08-09T02:16:15Z"。我使用下面的代码来解析它,并把它变成我认为是一个日期时间字段,但我得到一个错误从我的类方法来比较时间。请参阅下面的解析代码:
time= dateutil.parser.parse(x['MatchTime']) #MatchTime is the ISO 8601 field
时间似乎是正确的,但当我把它添加到我的游戏模型,粘贴在下面,我的is_live方法给了我一个错误
博弈模型:
class Game(models.Model):
time = models.DateTimeField(null=True, blank=True)
livePick = models.BooleanField(default=True)
def is_live(self):
now = timezone.now()
now.astimezone(timezone.utc).replace(tzinfo=None)
if now < self.time:
return True
else:
return False
这是我得到的错误,当我运行脚本添加在游戏与时间
line 34, in is_live
if now < self.time:
TypeError: unorderable types: datetime.datetime() < NoneType()
更新:时间用下面的
添加到游戏模型中g = Game.objects.create(team1=team1, team2=team2)
g.time = time
g.save()
非常感谢任何帮助。谢谢你!
发生这种情况是因为模型中的time
是可空的,并且对于比较失败的模型实例是空的(None
)。当您尝试将其与datetime
对象进行比较时,会引发异常。
你需要在你的逻辑中考虑空的可能性,例如:
if self.time is not None and now < self.time:
return True
else:
return False