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

Rod*_*ent 5 python mysql migration sqlite django

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

例如

class MyModel(models.Model):
    item_port = models.CharField(max_length=50)`
Run Code Online (Sandbox Code Playgroud)

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

class MyModel(models.Model):
    item_port = models.IntegerField(null=True)
Run Code Online (Sandbox Code Playgroud)

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

python manage.py makemigrationspython manage.py migrate

但是,我还记录了在git中对sqlite3数据库所做的所有迁移,以供参考。

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

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

非常感谢。

小智 1

如果你发现这item_port应该IntergerField不是 aCharField你可以运行

./manage.py schemamigration myapp --auto --update
Run Code Online (Sandbox Code Playgroud)

参考South文档高级命令和数据迁移

希望这会有所帮助:)