首页 > 解决方案 > RuntimeError:模型类未声明显式 app_label 并且不在 INSTALLED_APPS for Django OAuth Toolkit 中的应用程序中

问题描述

我想访问 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_labelApplication它提到的类中,但这也不起作用。

标签: pythondjangooauth-2.0

解决方案


如果您查看django-oauth2-provider 文档(我认为这是正确的库;我不得不猜测,因为我没有在您的问题中找到链接),它在那里说:

将 OAuth2 提供程序添加到 INSTALLED_APPS

INSTALLED_APPS = (
    # ...
    'provider',
    'provider.oauth2',
)

但我注意到您在问题中的代码还有其他内容:

'oauth2_provider',
'oauth2_provider.models.Application',

您是否尝试过文档的建议?那对你有用吗?


推荐阅读