Расширение абстрактной модели в Django
Я использую Django 2.x
а также OAuth Toolkit
,
Я пишу приложение, где мне нужно добавить ForeignKey
указывая на Application
модель OAuth Toolkit
Плагин, который определяется Аннотация.
Согласно документации. Я могу расширить AbstractApplication, а затем добавить в настройках
OAUTH2_PROVIDER_APPLICATION_MODEL='your_app_name.MyApplication'
В моем случае я создал свое приложение и в models.py
class CustomOAuthToolkitApplication(AbstractApplication):
pass
class OAuthToolkitTrackingLog(models.Model):
application_model = settings.OAUTH2_PROVIDER_APPLICATION_MODEL
application = models.ForeignKey(application_model, on_delete=models.CASCADE, blank=True, default=None, null=True)
user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True, default=None)
col_1 = models.CharField(max_length=255)
created = models.DateTimeField(auto_now_add=True)
и в settings.py
INSTALLED_APPS = [
...
'oauth2_provider',
'my_app',
]
OAUTH2_PROVIDER_APPLICATION_MODEL = 'my_app.CustomOAuthToolkitApplication'
Но когда я запускаю команду для генерации миграции
python manage.py makemigrations
Выдает ошибку как
The field oauth2_provider.Grant.application was declared with a lazy reference to 'my_app.customoauthtoolkitapplication', but app 'my_app' isn't installed.
The field oauth2_provider.RefreshToken.application was declared with a lazy reference to 'my_app.customoauthtoolkitapplication', but app 'my_app' isn't installed.
Как я могу исправить эту проблему?
1 ответ
Хммм. Я не уверен. Но насколько я помню из исходного кода django, порядок в INSTALLED_APPS имеет значение. Не могли бы вы попробовать поменяться местами, так что:
INSTALLED_APPS = [
...
'my_app',
'oauth2_provider',
]
Так что my_app выше в списке?