ISO 8601字段到Python DateTime字段



我正在从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

相关内容

  • 没有找到相关文章

最新更新