Postgres 9.1에서 Django 1.3으로 작업하십시오.Django 1.3 - BooleanField에서 DateTimeField 로의 마이그레이션이 실패합니다.
두 개의 오래된 bool 필드 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 저의 유일한 문제는 기존의 bool 상태를 저장해야한다는 것입니다. 그래서 datetime.now() 스탬프를 현재 true로 플래그가 지정된 모든 것에 추가 할 수 있습니다. – DivinusVox