【问题标题】:Run migrations without loading initial_data.json在不加载 initial_data.json 的情况下运行迁移
【发布时间】:2015-11-06 15:30:17
【问题描述】:

我在位于我的应用程序中的 json 中为我的应用程序提供用户列表:

myapp/
  fixtures/
    initial_data.json

每次我运行 python manage.py migrate 时都会加载它。我已经阅读了Providing initial data for models 文档,但它没有提到任何关于避免加载它的内容。

我想知道是否有一个命令可以在不加载 initial_data 的情况下运行python manage.py migrate

【问题讨论】:

    标签: django django-migrations django-fixtures


    【解决方案1】:

    您应该改用数据迁移,因为固定装置不能与迁移一起使用。 Fixtures 自 Django 1.7 起已弃用,将在 Django 1.9 中删除

    【讨论】:

    • 感谢您的回答。 Providing initial SQL data 已弃用并将被删除。 Django 1.8 版本的文档仍然推荐使用 .json 格式
    • .json 格式未被弃用,以这种方式加载初始数据固定装置。将您的夹具移动到迁移文件夹并创建将数据从夹具推送到数据库的迁移。
    【解决方案2】:

    考虑升级到 Django==1.8。升级后应该不会有很多问题。你的 Django 版本是多少?

    不管怎样,看看documentation,因为Django>=1.7 自动加载fixture 不起作用:

    如果应用程序使用迁移,则不会自动加载固定装置

    当您有 migrations 文件夹和其中的 __init__.py 文件时,应用程序会使用迁移。

    如果您使用 Django>=1.7 并在应用中使用迁移,则在运行 python manage.py migrate 时不会自动加载固定装置。

    但是,如果您在应用中不使用迁移,如果您的夹具文件名为 initial_data.json,您始终会自动加载夹具。

    您可以将 initial_data.json 文件重命名为任何其他名称(如 mydata.json)以避免自动加载夹具,然后,您可以随时通过运行加载数据:

    django-admin.py loaddata mydata.json

    【讨论】:

    • 我使用的是 Django 1.8.3,当我运行 migrate initial_data 加载时,有时我想避免它。
    • 您确定每次迁移时都会加载灯具吗?让我看看你的迁移文件。你编辑过它们吗?
    • 不,我没有。我刚刚创建了一个应用程序并在其中放置了一个名为“fixtures”的文件夹并添加了一个 initial_data.json 文件。现在当我运行 python manage.py migrate 时,initial_data 文件数据被加载到 db
    • fixtures文件夹之间创建一个名为migrations的文件夹,放入一个名为_init_.py的文件 在里面。然后,运行:python manage.py makemigrationspython manage.py migrate。您可以随时查看正在运行的项目的迁移:python manage.py migrate --list
    • 提供的数据正在加载,这很好。但是我最近在模型中进行了更改并且迁移失败,因为json中的数据没有那些新字段,这就是为什么我想知道是否有一个命令可以避免加载initial_data
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-03
    • 1970-01-01
    • 2015-04-29
    • 2021-10-22
    • 1970-01-01
    • 2018-09-07
    相关资源
    最近更新 更多