Переименуйте мое приложение Django auth, чтобы исправить ошибку "Application labels are not unique".
Когда я создавал свой проект Django, я создал приложение под названием auth
. Я никогда не использовал django.contrib.auth
, вместо этого я создал свой собственный код аутентификации. Модель User
без полей password
, пользовательские представления и сериализации API, вход по волшебным ссылкам, отправленным на электронную почту, и т. д. Я не использовал Django Admin, поэтому мне никогда не требовалась auth
реализация Django.
Теперь я хочу добавить Django Admin в свой проект, и для этого мне нужно добавить django.contrib.auth
, и теперь я сталкиваюсь с большими проблемами из-за ошибки django.core.exceptions.ImproperlyConfigured: Application labels aren't unique, duplicates: auth
.
Переименование моего собственного приложения auth
не представляется возможным. Я пытался изменить label
в его AppConfig
, но существующие миграции ломаются разными забавными и странными способами. Поэтому я решил импортировать приложение auth
от Django с пользовательским ярлыком, например, так:
# djangoauth.py
from django.apps import AppConfig
class DjangoAuthConfig(AppConfig):
name = "django.contrib.auth"
label = "django_auth"
А затем я добавил djangoauth.DjangoAuthConfig
к INSTALLED_APPS
. Но это тоже не работает, поскольку в приложении Django auth
есть миграции с жестко закодированным именем auth
, поэтому изменение ярлыка приложения теперь ломает эти миграции.
Я не знаю, как решить эту проблему. Мне бы очень хотелось, чтобы Django справлялся с дублированием имен приложений (просто префикс одного из них, например django_contrib_auth
), но это не так. Так как же мне переименовать одно из этих auth
приложений, чтобы я мог использовать их оба? Без риска потерять существующие данные auth
? У моего приложения много пользователей, и я действительно не могу допустить, чтобы эта таблица была удалена/восстановлена.
Да, я видел Как изменить имя приложения Django?, но это ответ от 2011 года, и я очень надеюсь, что с тех пор ситуация улучшилась 😬