Conflict with an app name of 'auth' even when not using Django auth
|Reported by:||Matt Robenolt||Owned by:||Matt Robenolt|
|Cc:||Matt Robenolt||Triage Stage:||Design decision needed|
|Has patch:||no||Needs documentation:||no|
|Needs tests:||yes||Patch needs improvement:||yes|
When starting a project from scratch and I remove all of the default apps out of INSTALLED_APPS, and create an app of my own called "auth", Django traverses through and registers the django.contrib.auth models automatically.
I found the source of the problem with django.core.management.validators. At the point of including any part of this module, django.contrib.auth is added into the app_store cache in django.db.models.loading. Once it has been cached in the app_store, it overrides MY 'auth' app because cache keys are stored by doing: "app.name.split('.')[-2]".
After digging through and tracing up, I found that I could simply comment out line 3 of django/core/management/validators.py and it prevents the extra models from ever being initialized unless specifically declared in settings.py
This may or may not be the best solution for the problem, but I have patched this in on a few projects of mine without any negative consequences. I can't determine if there's a better way to actually test it.
Change History (6)
comment:1 Changed 5 years ago by
|Cc:||Matt Robenolt added|
|Patch needs improvement:||unset|
comment:2 Changed 5 years ago by
|Component:||contrib.auth → Core (Other)|
|Patch needs improvement:||set|