【问题标题】:django 1.7 makemigrations requires a dependency that I attempted to removedjango 1.7 makemigrations 需要我试图删除的依赖项
【发布时间】:2015-10-09 20:57:32
【问题描述】:

我正在将 django 项目从 1.6.11 升级到 1.7.9。我使用 DRF 2.4.4。一旦一切正常,我将升级到 DRF 3.x

我开始使用 django-oauth2-provider,但它不能与 django 1.7 一起使用,所以我正在转向 django-oauth-toolkit。 作为记录,它不起作用,因为 HttpResponse 不再接受mimetype。它必须是'content_type'。 django-oauth2-provider 的 PR 已废弃。

我 pip 安装了它并将 oauth 应用程序添加到 INSTALLED_APPS。他们的docs 建议使用syncdb 然后migrate,尽管Django 1.7 deprecated syncdb。我尝试使用./manage migrate oauth2_provider 迁移它,但未成功。它不断报告:

ValueError: Dependency on unknown app: provider 

provider 恰好是 oauth 的旧模块,它与我的 2 个应用程序结合使用。 我将其从 INSTALLED_APPS 中删除,注释了其类的所有导入和用法,将具有 FK 的模型更改为 provider.oauth2.models.Client(我删除了该字段),然后再次尝试。我遇到了同样的错误。

其中一个应用的初始迁移似乎是唯一使用provider 的有效代码:

class Migration(migrations.Migration):

    dependencies = [
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
        ('contenttypes', '0001_initial'),
        ('provider', '__first__'),
    ]

但是,在这次迁移之后,我删除了该字段。对于 South,我可能会先使用 ./manage.py schemamigration myapp --auto,然后再使用 migrate。 但是,当我尝试makemigrations myapp 时,我得到了同样的错误。

我完全迷路了。如何摆脱旧的 oauth 模块并获得新的?我必须为 oauth2_provider 运行 makemigrations 还是只运行 migrate?我的猜测是只有migrate。为什么我无法使用 myapp 模型中的更改进行迁移?

【问题讨论】:

    标签: python django oauth django-migrations


    【解决方案1】:

    这件事发生在我身上。尝试在初始迁移中手动删除引用它的“提供者”应用程序行。或者,您可以删除所有迁移并从头开始运行“makemigrations”(请记住,对于初始迁移,您必须为每个单独的应用执行一次)。

    【讨论】:

    • 谢谢,我实际上删除了迁移及其依赖的迁移并重新创建了它们。我想承诺从南方过渡到临时迁移,仅此而已,但它不会奏效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-18
    • 2015-02-28
    • 1970-01-01
    • 2015-02-23
    • 1970-01-01
    相关资源
    最近更新 更多