【发布时间】:2013-07-20 13:14:27
【问题描述】:
在 Postgres 9.1 上使用 Django 1.3。
我的任务是将两个旧的布尔字段 pulled 和 mail_report 迁移到时间戳。
在尝试迁移时,我收到以下错误,我不确定如何绕过手动删除数据库中的非 Null 约束以允许我将所有记录转换为 null。
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 我想我唯一的麻烦是我需要保存现有布尔值的状态,所以我可以为所有当前标记为 true 的对象添加一个 datetime.now() 标记。跨度>
标签: django postgresql migration django-south