からモデルチェンジしました
class HardwareModel(models.Model):
name = models.CharField(max_length=128,unique=True)
series =models.CharField(max_length=128)
def __unicode__(self):
return "%s" % (self.name)
に
class HardwareModel(models.Model):
name = models.CharField(max_length=128,unique=True)
series = models.ForeignKey(HardwareModelSeries, blank=True)
def __unicode__(self):
return "%s" % (self.name)
そして、私は移住のために南を使用しました。( --auto を使用すると、移行スクリプトは南によって作成されます)
# Renaming column for 'HardwareModel.series' to match new field type.
db.rename_column('iamictinfra_hardwaremodel', 'series', 'series_id')
# Changing field 'HardwareModel.series'
db.alter_column('iamictinfra_hardwaremodel', 'series_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['iamictinfra.HardwareModelSeries']))
# Adding index on 'HardwareModel', fields ['series']
db.create_index('iamictinfra_hardwaremodel', ['series_id'])
まったく新しい sqllite データベースを作成している間 (テスト中)、次のエラーが発生します。
south DEBUG execute "CREATE INDEX "iamictinfra_hardwaremodel_b18a98d" ON "iamictinfra_hardwaremodel" ("series_id");" with params "[]"
FATAL ERROR - The following SQL query failed: CREATE INDEX "iamictinfra_hardwaremodel_b18a98d" ON "iamictinfra_hardwaremodel" ("series_id");
The error was: index iamictinfra_hardwaremodel_b18a98d already exists
create index コマンドを削除できるようになりましたが、運用サーバー (mySql) で動作するかどうかはわかりません。
別のオプションは、おそらくスクリプトを変更して列を削除し、それを変更する代わりに作成することです...しかし、私はさらに多くの移行を行っています....古い移行を混乱させるのは少し難しいと思います... .. トライキャッチでキャッチしてみた...
また、このスクリプトは古い南部バージョンを使用して作成された可能性もあります...そして、新しいバージョンでは、列を変更するときにインデックスの名前も変更されます...そして古いバージョンではそうではありませんでした...
私は南0.7.6(現在の最新)を使用しています。
助言がありますか?