Невозможно использовать django -allauth, когда уже есть приложение `account`? - PullRequest
0 голосов
/ 12 февраля 2020

В моем приложении Django уже есть приложение под названием account. Означает ли это, что АБСОЛЮТНО невозможно использовать django all-auth из-за конфликта имен? Из-за существующих данных приложение account не может быть переименовано.

settings.py:

INSTALLED_APPS = [
    ...
    'account',
    ...

    # For allauth:
    'django.contrib.sites',
    'allauth',
    'allauth.account',    # Name conflict
    ...

Если так, есть ли хорошая альтернатива?


2-14

По предложению Solarissmoke. Куда мне положить новое приложение и как оно называется? Это что-то вроде этого (конечно, это неправильно)?

my_project/account/apps.py:

import allauth.account
from django.apps import AppConfig


class AccountConfig(AppConfig):
    name = 'account'


class AllAuthAccountConfig(allauth.account):
    name = 'allauth.account'
    label = 'allauth_account'  # Change this
    verbose_name = 'aullauth_account'

1 Ответ

1 голос
/ 12 февраля 2020

Это известная проблема с django -Alalauth.

Вы можете обойти это, изменив свое собственное приложение на другой ярлык приложения . В вашем приложении AppConfig:

class AccountConfig(AppConfig):
    name = 'my_project.apps.account'
    label = 'my_project_account'  # Change this
    verbose_name = 'account'

И обратитесь к этой конфигурации приложения в вашем INSTALLED_APPS, например,

INSTALLED_APPS = [
    ...
    'account.apps.AccountConfig',
    ...

    'allauth',
    'allauth.account',
    ...

, который теперь должен работать, потому что ярлыки приложения уникальны. Обратите внимание, что единственная проблема в этом заключается в том, что имена таблиц базы данных для вашего приложения account должны будут измениться, чтобы не конфликтовать с приложением allauth - для этого потребуются некоторые переносы данных (если они установлены в установленном проекте) или создание fre sh миграций (если в проекте, где вы можете позволить себе заточить базу данных).

Вы также можете сделать это с приложением allauth.account, если это проще - просто создайте новую конфигурацию приложения в любом месте вашего проекта, например,

my_project / allauth_apps / apps.py (обязательно создайте __init__.py в этом новом каталоге):

class AllAuthAccountConfig(allauth.account):
    name = 'allauth.account'
    label = 'allauth_account'  # Change this
    verbose_name = 'aullauth_account'

А затем в вашем INSTALLED_APPS замените account с my_project.allauth_apps.apps.AllAuthAccountConfig. Как и выше, это изменяет имена таблиц базы данных.

...