gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 19:49:07 26 4
gpt4 key购买 nike

在我的 models.py 中,我有一些具有这种属性的模型:

timestamp = models.TimeField(default=0)

我想将它们更改为:

timestamp = models.DateTimeField(default=0)

使用

python manage.py schemamigration app --auto 

首先有效。但是

python manage.py migrate app

导致这个错误:

django.db.utils.ProgrammingError: column "timestamp" cannot be cast to type timestamp with time zone

所以我需要以某种方式使这种转换成为可能。对于没有日期的每个时间,我都想设置一个默认日期(例如昨天)。我怎样才能做到这一点?我只找到this在 SO 上,由于该错误,这根本没有帮助。顺便说一句:我正在使用 postgres 和 python3。

感谢您的帮助!

如果这样更容易的话,我可以直接在数据库上使用 SQL(没有 south)

最佳答案

那是因为 time 在 PostgreSQL 中无法转换(转换)为 timestamp(它们的时区相关变体都不是)。 F.ex.这也会失败:

SELECT 'now'::time::timestamp

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

ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ]ALTER [ COLUMN ] column_name[ SET DATA ] TYPE data_type [ COLLATE collation ] [ USING expression ]

Your query will look like, f.ex.:

ALTER TABLE "my_model"
ALTER COLUMN "column_name"
SET DATA TYPE TIMESTAMP WITH TIME ZONE USING 'yesterday'::date + "column_name"

关于python - Django:在 models.py 中将 TimeField 更改为 DateTimeField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23892307/

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