我从API获取一个DateTimeField,格式为" 2016-08-09T02:16:15Z"。我使用下面的代码来解析它并将其转换为我认为是日期时间字段,但我从我的一个类方法中得到一个错误来比较时间。请参阅下面的解析代码:
time= dateutil.parser.parse(x['MatchTime']) #MatchTime is the ISO 8601 field
时间似乎正在拉动,但是当我将其添加到我的游戏模型中,粘贴在下面时, my 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()
非常感谢任何帮助。谢谢!
答案 0 :(得分:0)
这种情况正在发生,因为模型中的time
可以为空,而对于失败的模型实例,None
为空(datetime
)。当您尝试将其与if self.time is not None and now < self.time:
return True
else:
return False
对象进行比较时,这会引发异常。
您需要在逻辑中考虑零可能性,例如:
{{1}}