我试图使用此链接扩展OAuth2应用程序模型。
,但是我在迁移时会出现一些问题 -
value error:oauth2_provider.accesstoken.application字段 懒惰地提到 'oauth2.companyfieldaddedapplication',但App'oauth2'不是 安装。声明了字段OAuth2_provider.grant.prant.Application 懒惰地提到'oauth2.companyfieldaddedapplication',但 未安装应用程序" OAuth2"。场 oauth2_provider.refreshtoken. application被懒惰 引用" oauth2.com" 未安装。
我在installed_apps中添加了oauth2,它仍在给出错误
settings.py
installed_apps = [
'apps.oauth2',
]
OAUTH2_PROVIDER_APPLICATION_MODEL='oauth2.CompanyFieldAddedApplication'
我的项目结构
├── apollo_project
│ ├── __init__.py
│ ├── settings.py
│ ├── settings.py.ren
│ ├── urls.py
│ └── wsgi.py
├── apps
│ ├── oauth2
│ │ ├── admin.py
│ │ ├── apps.py
│ │ ├── __init__.py
│ │ ├── migrations
│ │ │ ├── 0001_initial.py
│ │ │ ├── 0002_auto_20190215_1402.py
│ │ │ └── __init__.py
│ │ ├── models.py
│ │ ├── tests.py
│ │ ├── urls.py
│ │ └── views.py
project_folder> apps> oauth2> models.py
from django.db import models
from oauth2_provider.models import AbstractApplication
from apps.company.models import Company
class CompanyFieldAddedApplication(AbstractApplication):
company = models.ForeignKey(Company, on_delete=models.CASCADE, related_name='company')
追溯
Traceback (most recent call last):
File "manage.py", line 15, in <module>
execute_from_command_line(sys.argv)
File "/home/codism-7/.local/share/virtualenvs/apollo_django-njoxc1BQ/lib/python3.5/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
utility.execute()
File "/home/codism-7/.local/share/virtualenvs/apollo_django-njoxc1BQ/lib/python3.5/site-packages/django/core/management/__init__.py", line 375, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/codism-7/.local/share/virtualenvs/apollo_django-njoxc1BQ/lib/python3.5/site-packages/django/core/management/base.py", line 316, in run_from_argv
self.execute(*args, **cmd_options)
File "/home/codism-7/.local/share/virtualenvs/apollo_django-njoxc1BQ/lib/python3.5/site-packages/django/core/management/base.py", line 353, in execute
output = self.handle(*args, **options)
File "/home/codism-7/.local/share/virtualenvs/apollo_django-njoxc1BQ/lib/python3.5/site-packages/django/core/management/base.py", line 83, in wrapped
res = handle_func(*args, **kwargs)
File "/home/codism-7/.local/share/virtualenvs/apollo_django-njoxc1BQ/lib/python3.5/site-packages/django/core/management/commands/migrate.py", line 163, in handle
pre_migrate_apps = pre_migrate_state.apps
File "/home/codism-7/.local/share/virtualenvs/apollo_django-njoxc1BQ/lib/python3.5/site-packages/django/utils/functional.py", line 37, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "/home/codism-7/.local/share/virtualenvs/apollo_django-njoxc1BQ/lib/python3.5/site-packages/django/db/migrations/state.py", line 210, in apps
return StateApps(self.real_apps, self.models)
File "/home/codism-7/.local/share/virtualenvs/apollo_django-njoxc1BQ/lib/python3.5/site-packages/django/db/migrations/state.py", line 278, in __init__
raise ValueError("n".join(error.msg for error in errors))
ValueError: The field oauth2_provider.AccessToken.application was declared with a lazy reference to 'oauth2.companyfieldaddedapplication', but app 'oauth2' isn't installed.
The field oauth2_provider.Grant.application was declared with a lazy reference to 'oauth2.companyfieldaddedapplication', but app 'oauth2' isn't installed.
The field oauth2_provider.RefreshToken.application was declared with a lazy reference to 'oauth2.companyfieldaddedapplication', but app 'oauth2' isn't installed.
尝试将 'oauth2'
添加到installed_apps
只需从apps
文件夹中删除您的应用程序,然后将其放在外面即可。然后在您的INSTALLED_APPS
中添加以下行。
installed_apps = [
'oauth2.apps.Oauth2Config',
]
Oauth2Config
是apps.py
中的class
您的项目结构应该看起来像这样
├── apollo_project
│ ├── __init__.py
│ ├── settings.py
│ ├── settings.py.ren
│ ├── urls.py
│ └── wsgi.py
├── apps
├── oauth2
├── admin.py
├── apps.py
├── __init__.py
├── models.py
├── tests.py
├── urls.py
└── views.py
i通过将所有表放在数据库中并迁移来解决问题。我不确定为什么它有效,但确实如此。希望我可以帮助别人。