[英]Django: Change TimeField to DateTimeField in models.py
在我的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
所以我某種程度上需要使這種鑄造成為可能。 對於每個沒有日期的時間,我想設置一個默認日期(例如昨天)。 我怎樣才能做到這一點? 我只在SO上找到了它 ,由於這個錯誤,它根本沒有幫助。 順便說一句:我正在使用postgres和python3。
我感謝您的幫助!
如果這樣更容易,我可以直接在數據庫上使用SQL(不向南)
這是因為time
不能轉化(鑄造),以timestamp
(既不是他們的時區相關變種)在PostgreSQL中。 F.ex. 這也會失敗:
SELECT 'now'::time::timestamp
在這些情況下,應該在ALTER TABLE
語句中USING
子句(如果可以直接編輯它):
ALTER TABLE [ IF EXISTS ] [ ONLY ] [ * ] ALTER [ COLUMN ] [ SET DATA ] TYPE [ COLLATE ] [ USING ]
您的查詢將如下所示:
ALTER TABLE "my_model"
ALTER COLUMN "column_name"
SET DATA TYPE TIMESTAMP WITH TIME ZONE USING 'yesterday'::date + "column_name"
如果表中沒有任何數據,則可以從應用程序的“遷移”文件夾中刪除遷移,並將字段更改為“日期時間”,然后進行初始遷移。 我的問題得以解決,而無需涉及SQL查詢
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.