在Postgres 9.1上使用Django 1.3。Django 1.3 - BooleanField到DateTimeField迁移失败
我的任务是将两个旧布尔字段pulled
和mail_report
迁移到时间戳。
在试图迁移时,我得到以下错误,我不确定如何在数据库中手动删除非空约束以避免让我将所有记录强制转换为空。 django.db.utils.DatabaseError: column "pulled" cannot be cast to type timestamp with time zone
任何有助于解决这个问题的方法都不会让我手动修补我们的实时数据库,我们将不胜感激。
模型声明的变化:
# Reporting Checked Flags
# pulled => Object has been processed through order_picklist
- pulled = models.BooleanField(default=False)
+ pulled = models.DateTimeField(blank=True, null=True, default=None)
# mail_report => Object has been processed through report_mailing_list
- mail_report = models.BooleanField(default=False)
+ mail_report = models.DateTimeField(blank=True, null=True, default=None)
我认为最好在两次分离的迁移中做到这一点:首先,从模型中删除两列,然后用新类型重新创建它们。 –
@PauloBu我想我唯一的麻烦是我需要保存现有布尔的状态,所以我可以添加一个datetime.now()标记为所有当前标记为true的标记。 – DivinusVox