Schemamigration运行应用程序中的现有列

时间:2017-06-29 06:36:57

标签: python django django-south schema-migration

假设我有一个名为animals的Django应用程序。该应用程序有一个名为“哺乳动物”的模型如下

class Mammal(models.Model)
    name = models.CharField(max_length=256)
    is_active = models.BooleanField(default=True)
    date_added = models.DateTimeField(auto_now_add=True)
    date_modified = models.DateTimeField(auto_now=True)

我为上述模型运行模式迁移

./manage.py schemamigration mammal --initial

创建初始迁移文件,然后按照以下方式迁移它

./manage.py migrate mammal

现在我更新模型并添加一个字段mammal_type,如下所示

class Mammal(models.Model)
    name = models.CharField(max_length=256)
    mammal_type = models.CharField(max_length=63, choices=TYPE_CHOICES, default=TYPE_MAMMAL)
    is_active = models.BooleanField(default=True)
    date_added = models.DateTimeField(auto_now_add=True)
    date_modified = models.DateTimeField(auto_now=True)

我再次为上述模型运行模式迁移

./manage.py schemamigration mammal --auto
./manage.py migrate mammal

一切都很顺利。现在问题来了。我添加另一个字段灭绝如下

class Mammal(models.Model)
    name = models.CharField(max_length=256)
    mammal_type = models.CharField(max_length=63, choices=TYPE_CHOICES, default=TYPE_MAMMAL)
    extinct = models.BooleanField(default=False)
    is_active = models.BooleanField(default=True)
    date_added = models.DateTimeField(auto_now_add=True)
    date_modified = models.DateTimeField(auto_now=True)

我运行架构迁移

./manage.py schemamigration mammal --auto

新的迁移文件包含先前添加的mammal_type字段的模式迁移,该字段实际上不应存在。我不确定为什么会这样。

我尝试过运行特定于字段的模式迁移,这允许我只为该字段添加迁移,但是当涉及到动态创建M2M表时,特定于字段的模式迁移无济于事。我需要为整个应用程序运行模式迁移,以便创建M2M表。

请咨询

0 个答案:

没有答案