如何在Django中将现有的CharField数据迁移到IntegerField

时间:2016-05-10 13:20:22

标签: python mysql django sqlite migration

我的models.py中有一些带有CharFields的模型。

e.g。

class MyModel(models.Model):
    item_port = models.CharField(max_length=50)`

我已经意识到这对于一个端口来说有点愚蠢,并将它们全部更改为IntegerFields,如下所示:

class MyModel(models.Model):
    item_port = models.IntegerField(null=True)

我在本地开发系统中使用sqlite3,使用MySQL类型数据库进行部署。通常,我使用以下方法从头开始部署时为新的docker实例制作迁移:

python manage.py makemigrationspython manage.py migrate

但是,我还记录了在git中对我的sqlite3 db进行的所有迁移以供参考。

我的主要问题是,我可以简单地使用数据库中的现有数据(在客户端站点上将是一个MySQL类型数据库,或者我需要手动执行此类操作)从CharField到IntegerField进行makemigrations / migrate ?:

https://docs.djangoproject.com/en/1.9/topics/migrations/#data-migrations

非常感谢。

1 个答案:

答案 0 :(得分:1)

如果您发现item_port应该是IntergerField而不是CharField则可以运行

./manage.py schemamigration myapp --auto --update

请参阅南方文档Advanced Commands and Data Migrations

希望这会有所帮助:)