Django Python中如何正确检查变量是否为date类型实例
类型判断失败的原因
两个判断返回False是因为对匹配类型的认知存在偏差:
models.DateTimeField是Django用来定义数据表列结构的字段类,它本身不对应从模型实例取出的字段值的数据类型,二者不存在实例归属关系。- 你调用了
.date()方法,该方法会将原本的datetime.datetime类型值转换为datetime.date类型值。datetime.datetime是datetime.date的子类,但父类date的实例不属于子类datetime,因此判断是否为datetime类型会返回False。
正确判断方式
从datetime模块导入date类型后,再做实例判断即可:
from datetime import date isinstance(date_var, date) # 执行结果为True
补充说明
- 如果要判断的值是带时分秒的日期时间类型,才使用
isinstance(待检测值, datetime)做判断 - 不要使用Django的模型字段类(如
models.DateTimeField、models.DateField)检测字段取出值的类型,这类字段类仅负责表结构定义、值的存取转换逻辑,和取出后的实际值类型没有实例关联。
内容的提问来源于stack exchange,提问作者Akshay Vijay Jain
相关产品推荐
相关产品推荐

