I'm working on a Django 1.5 project and I have a custom user model (let's call it CustomUser
). Another app (SomeApp) needs to reference this custom user model. For the purposes of ForeignKey and such, the Django documentation says to use
User = settings.AUTH_USER_MODEL
However, some functions in SomeApp.models need to access what would have formerly been known as User.objects
. But User is now a string and not a class, so User.objects
fails. The alternative would be
from django.contrib.auth import get_user_model
User = get_user_model()
Which works in other modules, but when I use this in models.py of SomeApp, Django raises an error:
ImproperlyConfigured("AUTH_USER_MODEL refers to model '%s' that has not been installed" % settings.AUTH_USER_MODEL)
Any ideas?
EDIT 1 - Traceback:
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "...\django-badger\badger\__init__.py", line 7, in <module>
from badger.models import Badge, Award, Progress
File "...\django-badger\badger\models.py", line 26, in <module>
User = get_user_model()
File "...\lib\site-packages\django\contrib\auth\__init__.py", line 127, in get_user_model
raise ImproperlyConfigured("AUTH_USER_MODEL refers to model '%s' that has not been installed" % settings.AUTH_USER_MODEL)
ImproperlyConfigured: AUTH_USER_MODEL refers to model 'MyApp.AuthUser' that has not been installed
EDIT 2 - INSTALLED_APPS settings:
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'django.contrib.admindocs',
'south',
'MyApp', # this is where my user model is defined
'SomeApp', # I try to use get_user_model() in this app's models.py; doesn't work.
'social_auth',
)
AUTH_USER_MODEL
in your settings? In which application is the User and what is the class name for it? – PasteurizerINSTALLED_APPS
setting ? – Celestynaget_user_model()
in the MyApp models.py instead of directly reffering with the class name? – Pasteurizer