【问题标题】:Django Migrations from 1.5 version to 1.7Django 从 1.5 版本迁移到 1.7
【发布时间】:2015-01-01 04:12:07
【问题描述】:

我有一个版本为 1.5 的现有 Django 项目,现在我已将其升级到新的 Django 1.7

我主要关心的是迁移。

我采取了以下步骤将我的项目转换为 Django 1.7。

  1. 将旧的 South migrations 移动到 south_migrations 文件夹中
  2. 从已安装的应用程序中删除了“south”
  3. ./manage.py makemigrations
  4. ./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 输入了一个默认值,然后运行makemigrationsmigrate。这够了吗,还是我需要做更多的事情?

【问题讨论】:

    标签: python django django-1.7


    【解决方案1】:

    我主要关心的是迁移。这是正确的方法吗?

    是的。如果您的所有部署都是最新的(也就是说,没有尚未应用的 South 迁移),您可以简单地删除 South 迁移并从 INSTALLED_APPS 中删除 South。从 Django 的角度来看,您正在使用现有的应用程序并将其转换为使用迁移,the documentation 中描述了一个简单的案例:

    如果您的应用已经有模型和数据库表,但还没有迁移(例如,您根据以前的 Django 版本创建它),您需要将其转换为使用迁移;这是一个简单的过程:

    $ python manage.py makemigrations your_app_label

    这将为您的应用进行新的初始迁移。现在,当你运行 migrate 时,Django 会检测到你有一个初始迁移,并且它想要创建的表已经存在,并且会将迁移标记为已应用。

    如何解决这些BooleanField 警告?

    (请注意,从 Django 1.8 开始,此警告不再存在。)

    这些警告指的是 Django 中的向后不兼容的更改,可能会影响您。但它可能不会。仅当您的代码没有为 BooleanField 指定默认值,但仍希望它使用默认值 False 时,它才会影响您。您应该查看所有应用程序中的所有 BooleanFields 并确定是否存在这种情况。

    如果没有,您可以使用 SILENCED_SYSTEM_CHECKS 设置简单地使警告静音。

    如果您的代码确实依赖此隐式默认值,那么, 将应用转换为使用迁移后,您应该显式添加 default=False 并创建迁移。 (当然,无论如何您都可以在任何地方都这样做,但如果您实际上不需要使用默认值,最好不要定义默认值。)

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-04
    • 2014-12-13
    • 2014-10-28
    • 2015-01-02
    • 1970-01-01
    • 2020-09-29
    • 2015-04-12
    • 2014-04-12
    相关资源
    最近更新 更多