You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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赋什么值,自然就会抛出语法异常。

怎么修正?

根据你的需求,分两种情况调整:

  1. 如果不满足条件时,想保留profile.key_expires原来的值:
profile.key_expires = datetime.now() + datetime.timedelta(days=2) if profile.key_expires > datetime.now() else profile.key_expires
  1. 如果不满足条件时,需要设置成其他值(比如当前时间):
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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:25:14