我正在将 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 的旧模块,它与我的两个应用程序结合在一起。 我从 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 模型中的更改进行迁移?
请您参考如下方法:
这件事发生在我身上。尝试在引用它的初始迁移中手动删除“提供者”应用程序行。或者,您可以删除所有迁移并从头开始运行“makemigrations”(请记住,对于初始迁移,您必须为每个单独的应用执行一次)。
