I have been trying to get two third party apps to play nice together, and it just hasn't been working due to their names.
The two apps I am trying to get to work are django-user-accounts and django-allauth. The problem is that both apps are using the same namespace "account", and I don't understand how to fix them.
I did find some things like this which seems to be the way to go about fixing it, but when I try to implement it, I have two problems:
allauth package, and to get the account app folder for it, I have to also create the allauth folder first which makes those other apps inaccessible.Here's what I have so far:
Under my project folder I created this structure:
allauth
├── account
│ ├── apps.py
│ └── __init__.py
└── __init__.py
In allauth.account.__init__, I have:
from django.apps import AppConfig
default_app_config = 'allauth.account.apps.CustomAccountAppConfig'
In allauth.account.apps I have:
from django.apps import AppConfig
class CustomAccountAppConfig(AppConfig):
verbose_name = 'custom account'
name = "allauth.account"
label = "custom_account"
def __init__(self, app_name, app_module):
AppConfig.__init__(self,app_name, app_module)
This appears to resolve the conflict with the name, but I then get ImportError: No module named 'allauth.socialaccount', because it has overridden the allauth package.
How can I solve this naming conflict while keeping all other subpackages and applications working?
Maybe the solution is here: https://docs.djangoproject.com/en/5.0/ref/applications/#for-application-users
Instead of shadowing the allauth application name inside your project (which is causing your import errors), define a new name.
Adapting the docs example:
# myproject/apps.py
from allauth.account.apps import AccountConfig
class AllauthAccountConfig(AccountConfig):
name = "allauth_account"
# myproject/settings.py
INSTALLED_APPS = [
"myproject.apps.AllauthAccountConfig",
# ...
]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With