Python Django:在models.py中将TimeField更改为DateTimeField

Python Django:在models.py中将TimeField更改为DateTimeField,python,sql,django,postgresql,Python,Sql,Django,Postgresql,在my models.py中,我有一些具有此类属性的模型: timestamp = models.TimeField(default=0) 我想将它们更改为: timestamp = models.DateTimeField(default=0) 使用 python manage.py schemamigration app --auto 一开始起作用。 但是 导致此错误的原因: django.db.utils.ProgrammingError: column "timestamp" c

在my models.py中,我有一些具有此类属性的模型:

timestamp = models.TimeField(default=0)
我想将它们更改为:

timestamp = models.DateTimeField(default=0)
使用

python manage.py schemamigration app --auto 
一开始起作用。 但是

导致此错误的原因:

django.db.utils.ProgrammingError: column "timestamp" cannot be cast to type timestamp with time zone
所以我需要让这个角色成为可能。对于每次没有日期的情况,我都要设置一个默认日期(例如昨天)。我该怎么做? 我只发现是这样的,因为这个错误,这根本没有帮助。 顺便说一句:我正在使用postgres和python3

我感谢你的帮助


我可以在数据库上直接使用SQL(没有south),如果这更容易的话,那是因为在PostgreSQL中,
时间
不能转换(铸造)为
时间戳
(两者都不是时区相关的变体)。F.ex。这也将失败:

SELECT 'now'::time::timestamp
在这些情况下,您应该在
ALTER TABLE
语句中使用
USING
子句(如果可以直接编辑):


如果表中没有任何数据,则可以从应用程序的migrations文件夹中删除迁移,并将字段更改为DateTime,然后执行初始迁移。
在不涉及SQL查询的情况下,我的问题就解决了

您可能想要的东西叫做数据迁移:这篇文章有帮助吗?“这是因为在PostgreSQL中时间不能转换(铸造)为时间戳(也不能转换为与时区相关的变量)。”Aughhhh。那么我现在使用的糟糕模式是如何通过代码审查的呢。谢谢,这个答案真的很有帮助。完成了上面的步骤,但仍然得到相同的错误
SELECT 'now'::time::timestamp
ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ] ALTER [ COLUMN ] column_name [ SET DATA ] TYPE data_type [ COLLATE collation ] [ USING expression ]
ALTER TABLE "my_model"
ALTER COLUMN "column_name"
SET DATA TYPE TIMESTAMP WITH TIME ZONE USING 'yesterday'::date + "column_name"