Django日期比较抛出异常,求排查赋值代码写法问题
你的三元表达式缺少了
else分支! 嘿,我一眼就发现你这段代码的核心问题啦——Python里的三元条件表达式必须同时包含if和else两部分,不能只写if分支就完事!
你写的代码是:
profile.key_expires = datetime.now() + datetime.timedelta(days=2) if profile.key_expires > datetime.now()
这种写法不符合Python的语法规则,三元表达式的标准结构是目标值 = 满足条件时的结果 if 判断条件 else 不满足条件时的结果。解释器不知道当profile.key_expires <= datetime.now()的时候,你想给profile.key_expires赋什么值,自然就会抛出语法异常。
怎么修正?
根据你的需求,分两种情况调整:
- 如果不满足条件时,想保留
profile.key_expires原来的值:
profile.key_expires = datetime.now() + datetime.timedelta(days=2) if profile.key_expires > datetime.now() else profile.key_expires
- 如果不满足条件时,需要设置成其他值(比如当前时间):
profile.key_expires = datetime.now() + datetime.timedelta(days=2) if profile.key_expires > datetime.now() else datetime.now()
另外还要注意一个潜在问题:要确保profile.key_expires已经被正确初始化过(比如不是None,且是有效的datetime类型),不然和datetime.now()比较时也会抛出类型错误哦!
内容的提问来源于stack exchange,提问作者Melissa Stewart
相关产品推荐
相关产品推荐

