ここで私は今朝私のシステムで2回複製しました。 djangoを使って作業する1.9.2。Django 1の間違った移行がデータモデルを乱す
は非常に単純に、私はモデルに変更を加えた、私はこの変更:これに
class Sighting(models.Model):
caption = models.CharField(max_length=100,default=None)
subspecies = models.ForeignKey(Subspecies, default=None, blank=True)
lat = models.FloatField(default=None)
lng = models.FloatField(default= None)
#location = models.CharField(max_length=100, default=None, null=True, blank=True)
sighting_date = models.DateTimeField()
image = models.ImageField(default=None)
user_id = models.IntegerField(default=None)
def __str__(self):
return self.caption
:
class Sighting(models.Model):
caption = models.CharField(max_length=100,default=None)
subspecies = models.ForeignKey(Subspecies, default=None, blank=True)
species_tags = models.CharField(max_length=100,default=None)
lat = models.FloatField(default=None)
lng = models.FloatField(default= None)
#location = models.CharField(max_length=100, default=None, null=True, blank=True)
sighting_date = models.DateTimeField()
image = models.ImageField(default=None)
user_id = models.IntegerField(default=None)
def __str__(self):
return self.caption
を私がモデルにspecies_tags
フィールドを追加しました。私は正常にmakemigrations
を実行した後、私はこのエラーを得たmigrate
しようとした:
django.db.utils.IntegrityError: NOT NULL constraint failed: birds_sighting.species_tags
だから、私は新しい分野へblank=True, null=True
を追加し、これにモデルを変更:
class Sighting(models.Model):
caption = models.CharField(max_length=100,default=None)
subspecies = models.ForeignKey(Subspecies, default=None, blank=True)
species_tags = models.CharField(max_length=100,default=None, blank=True, null=True)
lat = models.FloatField(default=None)
lng = models.FloatField(default= None)
#location = models.CharField(max_length=100, default=None, null=True, blank=True)
sighting_date = models.DateTimeField()
image = models.ImageField(default=None)
user_id = models.IntegerField(default=None)
def __str__(self):
return self.caption
私は再びmakemigrations
を走りました、それは再びmigrate
の変化を反映し、同じエラーを示しました。
次に、マイグレーションフォルダに入って、今日作成した以前のマイグレーションを手動で削除してから、makemigrations
とmigrate
を実行して正常に動作しました。私は再び2回テストしましたが、最初にblank=True, null=True
プロパティを設定せずにモデルにフィールドを追加してmakemigrations
を実行しただけで、モデルを修正するだけでマイグレーションができなくなりました。以前に行ったマイグレーションを手動で削除する必要がありましたエラー。
You are encouraged to make migrations freely and not worry about how many you have; the migration code is optimized to deal with hundreds at a time without much slowdown.
私は私が私のワークフローで間違ってここで何かをやっている把握、およびヘルプは大歓迎されています。私は、hereを参照してください、あなたがこれをしなければならなかったとは思いませんでした。
私は手動でマイグレーションを削除することはややこしいと思っていましたが、この種のエラーは多く発生します。 fミス。 –
@jeffery_the_windしかし、それはどのようにジャンゴの作品です –