在Django中,我有一个带有以下整型字段的模型
GENDER_CHOICES = (
(0, 'Male'),
(1, 'Female'),
)
gender = models.IntegerField(choices=GENDER_CHOICES)
我想用这些选择把这个模型变成CharField
GENDER_CHOICES = (
("MALE", 'Male'),
("FEMALE", 'Female'),
("NA", 'Id Rather Not Say'),
)
gender = models.CharField(choices=GENDER_CHOICES, max_length=10)
如果我通过运行makemigrations
和migrate
来执行此操作,我将丢失数据库中的现有数据
如何在不丢失数据库中现有数据的情况下进行此(及类似)迁移
理想情况下,我会在迁移本身中这样做,在我们使用migrate
命令时,迁移将在生产服务器上运行
首先,您可以存储旧字段,并使用新选项将新字段添加到模型中。之后,您可以运行独立代码并将旧数据映射到新字段
您需要进行数据迁移(正如我最近在回答中所述:How to modify a models who's already migrated in Database?),但步骤如下:
gender
重命名为gender_integer
(或类似名称);从中进行迁移gender
字段;从中进行迁移gender_integer
的内容映射到gender
(请参见上面的链接)gender_integer
;从中进行迁移李>迁移1:创建一个类似于gender_tmp的char字段,将所有数据迁移到其中
迁移2:删除gender并将gender_tmp重命名为gender
相关问题 更多 >
编程相关推荐