【发布时间】:2019-06-26 22:58:14
【问题描述】:
我想访问 Django OAUTH Toolkit 使用的模型,以便定期从数据库中删除旧令牌。我以为我只是导入它们:
from oauth2_provider.management.commands.cleartokens import Command
from oauth2_provider.models import AccessToken
Command.handle()
但是,当我尝试在命令行中运行此文件时,我收到以下错误:
Traceback (most recent call last):
File ".\db_cleanup.py", line 5, in <module>
from oauth2_provider.models import AccessToken
File "C:\Users\User\.virtualenvs\gsm-django\lib\site-packages\oauth2_provider\models.py", line 178, in <module>
class Application(AbstractApplication):
File "C:\Users\User\.virtualenvs\gsm-django\lib\site-packages\django\db\models\base.py", line 95, in __new__
"INSTALLED_APPS." % (module, name)
RuntimeError: Model class oauth2_provider.models.Application doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.
我也尝试在我的设置文件中将oauth2_provider.models.Application 添加到我已安装的应用程序中,但无济于事:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'api',
'oauth2_provider',
'oauth2_provider.models.Application',
'rest_framework',
'rest_framework.authtoken',
'graphene_django',
'corsheaders',
]
我也将app_label 添加到它提到的Application 类中,但这也不起作用。
【问题讨论】:
-
您的
Django版本是什么?如果您使用的是this package,请注意它的最后一次更新是在 5 年前,可能与最新的Django版本不兼容。 -
特别是从
Django 2.0开始对app_label的更改可能会破坏旧应用程序。阅读更多关于 code.djangoproject.com/ticket/28691 和相关票证的信息。 -
我使用的是 Django 2.1,也许你是对的,这是一个不兼容的问题
-
我的错!我实际上正在使用这个包:github.com/jazzband/django-oauth-toolkit 与 django 2.0 兼容
-
我想我可能已经找到了问题所在,我正在使用 IntelliJ,当我在 IntelliJ 中从控制台运行文件时出现错误:
pkg_resources.ContextualVersionConflict: (Django 1.11.16 (c:\users\user\appdata\local\programs\python\python36\lib\site-packages), Requirement.parse('django>=2.0'), {'django-oauth-toolkit'})似乎 django 在 IntelliJ 中已过时或其他什么.与我从 CLI 运行它时相反