Django从1.5版本迁移到1.7
我有一个现有的Django项目版本1.5,现在我已经升级到新的Django 1.7。Django从1.5版本迁移到1.7
我主要关心的是迁移。
我采取了以下步骤将我的项目转换为Django 1.7。
- 移动的旧南迁移到
south_migrations
文件夹 - 删除 “南”,从安装的应用程序
- 跑
./manage.py makemigrations
- 跑
./manage.py migrate
这是正确的做法?
我有另一个问题。当我运行./manage.py runserver
它给出了这样的警告:
提示:Django 1.6将BooleanField的默认值从False更改为None。有关更多信息,请参阅 https://docs.djangoproject.com/en/1.6/ref/models/fields/#booleanfield。 sqls.Sql.updates:(1_6.W002)BooleanField没有默认值。
我该如何解决这个问题?我只需输入BooleanField
的默认值,然后运行makemigrations
和migrate
。这足够了还是我需要做更多的事情?
我主要关心的是移植。这是正确的方法吗?
是的。如果您的所有部署都是最新的(也就是说,没有南迁移没有应用),那么您可以简单地删除南迁移并从INSTALLED_APPS
中删除南迁。从Django的角度来看,你正在服用的现有应用并将其转变成使用迁移,一个简单的情况下,the documentation描述:
如果您的应用程序已经有模型和数据库表,并且没有迁移,但(例如,您是根据以前的Django版本创建的),您需要将其转换为使用迁移;这是一个简单的过程:
$蟒蛇manage.py makemigrations your_app_label
这将使您的应用程序新的初始迁移。现在,当您运行迁移时,Django会检测到您有初始迁移,并且它想创建的表已经存在,并将迁移标记为已应用。
如何解决这些BooleanField
警告?
(请注意,此警告不再作为Django的1.8。)
这些警告是指在Django一个向后兼容的变化是可能影响你。但它可能不会。如果你的代码没有指定BooleanField
的默认值,但它仍然会使用默认值False
。您应该查看所有应用中的所有BooleanFields
,然后决定是否有这种情况。
如果不是,您可以使用SILENCED_SYSTEM_CHECKS
设置简单地使警告消失。
如果你的代码不依赖于这个隐含的默认值,然后,后转换应用使用迁移,你应该添加default=False
明确并创建一个迁移。 (当然,无论如何你都可以这么做,但最好不要定义一个默认值,如果你实际上不需要使用它的话)。
这个检查已经在开发分支中删除了:https:// code.djangoproject.com/ticket/23765。 – 2015-03-23 08:48:30