Django DateTimeField显示为字符串

时间:2018-07-12 03:14:31

标签: django python-3.x

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

ngIf

但是,当我检查数据类型时,它显示为字符串

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

有趣的是,在我的生产服务器上运行的相同代码将其显示为

 print(self.created_at)
 print(type(self.created_at))

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

我正在使用python3和Django 1.10.6。

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

1 个答案:

答案 0 :(得分:0)

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

  

例如,DateField字段使用Python datetime对象存储   数据。数据库不存储日期时间对象,因此字段值必须   转换为符合ISO标准的日期字符串,以插入到   数据库。

(来自documentation on the save() method

仅当已经有要从该特定字段读取的数据时,这才起作用。

换句话说,如果您要创建新记录,则该值将为字符串,因为该字段不存在任何值。

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

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