RuntimeError: Класс модели не объявляет явную метку app_label и не находится в приложении в INSTALLED_APPS для Django OAuth Toolkit - PullRequest
0 голосов
/ 25 июня 2019

Я хочу получить доступ к моделям, которые использует 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, о котором он упоминает, но это тоже не работает.

Ответы [ 2 ]

1 голос
/ 25 июня 2019

Если вы посмотрите документы django-oauth2-provider (я полагаю, это правильная библиотека; я должен был догадаться, поскольку я не нашел ссылку в вашем вопросе), там написано:

Добавление поставщика OAuth2 в INSTALLED_APPS

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

Но я заметил, что в вашем коде в вопросе есть что-то еще:

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

Вы пробовали, что предлагают документы? Это работает для вас?

0 голосов
/ 26 июня 2019

Если вы посмотрите на документы django oauth2 , там написано:

Добавьте oauth2_provider к вашему INSTALLED_APPS

INSTALLED_APPS = (
    ...
    'oauth2_provider',
)

Но я заметил, что ваш код в вопросе имеет 2 приложения, а не 1:

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

Вы пытались удалить это приложение oauth2_provider.models.Application? Это работает для вас?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...