расширение абстрактной модели в Django - PullRequest
0 голосов
/ 22 ноября 2018

Я использую 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 Ответ

0 голосов
/ 22 ноября 2018

Хммм.Я не уверен.Но насколько я помню из исходного кода django, порядок в INSTALLED_APPS имеет значение.Не могли бы вы попробовать поменяться местами, так:

INSTALLED_APPS = [
  ...
  'my_app',
  'oauth2_provider',
]

чтобы my_app был выше в списке?

...