Расширение абстрактной модели в 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 выше в списке?

Другие вопросы по тегам