モデル:
class ListContext(models.Model):
content = models.CharField(max_length=200, blank=True)
私は、south を使用してスキーマの移行を管理しています。
ここで、以前のモデルを次のモデルに変更します。
from django.contrib.contenttypes.models import ContentType
class ListContext(models.Model):
content = models.ForeignKey(ContentType, blank=True, null=True)
移行の場合:
$ python manage.py schemamigration --auto page
~ Changed field content on page.ListContext
+ Added index for ['content'] on page.ListContext
Created 0010_auto__chg_field_listcontext_content.py. You can now apply this migration with: ./manage.py migrate page
この時点まではすべて問題ありません。
$ python manage.py migrate page
Running migrations for page:
- Migrating forwards to 0010_auto__chg_field_listcontext_content.
> page:0010_auto__chg_field_listcontext_content
FATAL ERROR - The following SQL query failed: ALTER TABLE "page_page_listcontext" ALTER
COLUMN "content_id" TYPE integer, ALTER COLUMN "content_id" DROP NOT NULL, ALTER COLUMN
"content_id" DROP DEFAULT;
The error was: column "content_id" cannot be cast to type integer
Error in migration: page:0010_auto__chg_field_listcontext_content
string から int へのキャスト中にエラーが発生したと推測できますが、これを回避して移行を完了するにはどうすればよいですか?
テーブルに格納されているデータを保持する必要はありません。