gpt4 book ai didi

Django DateTimeField 显示为字符串

转载 作者:行者123 更新时间:2023-12-04 15:57:24 27 4
gpt4 key购买 nike

嗨,我的 Django 模型之一具有以下字段

created_at = models.DateTimeField(blank=True,null=True)

但是,当我检查数据类型时,它显示为 String
 print(self.created_at)
print(type(self.created_at))

2018-01-10T20:53:19Z
<class 'str'>

有趣的是,在我的生产服务器上运行的相同代码将其显示为
2016-04-21 09:38:38+00:00
<class 'datetime.datetime'>

我正在使用 python3 和 Django 1.10.6。

知道是什么原因造成的吗?

最佳答案

数据库不存储 Python 数据类型,因此 django ORM 会为您进行一些转换和转换,以返回等效的 Python 类型。

For example, DateField fields use a Python datetime object to store data. Databases don’t store datetime objects, so the field value must be converted into an ISO-compliant date string for insertion into the database.



(来自 documentation on the save() method)

这只适用于已经有数据要从该特定字段读取的情况。

换句话说,如果您要创建新记录,则该值将是一个字符串,因为该字段没有现有值。

如果对象正在更新,那么如果您尚未更新该字段,则该值将是日期时间对象。

Django 使用相同的 save()创建新记录和更新现有记录的方法。

关于Django DateTimeField 显示为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51296799/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com