Ich arbeite an einem Django 1.5-Projekt, und ich habe ein eigenes Benutzermodell (nennen wir es CustomUser
). Eine andere App (SomeApp) muss auf dieses benutzerdefinierte Benutzermodell verweisen. Für die Zwecke der ForeignKey und so, sagt die Django-DokumentationDjango 1.5: Zugriff auf benutzerdefinierte Modellfelder in models.py
User = settings.AUTH_USER_MODEL
jedoch einige Funktionen in SomeApp.models verwenden müssen zuzugreifen, was früher als User.objects
bekannt gewesen wäre. Aber Benutzer ist jetzt eine Zeichenfolge und keine Klasse, also schlägt User.objects
fehl. Die Alternative wäre
from django.contrib.auth import get_user_model
User = get_user_model()
werden, die in anderen Modulen funktioniert, aber wenn ich diese verwenden in models.py von SomeApp, Django löst einen Fehler:
ImproperlyConfigured("AUTH_USER_MODEL refers to model '%s' that has not been installed" % settings.AUTH_USER_MODEL)
Irgendwelche Ideen?
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 Einstellungen:
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',
)
Können Sie volle Zurückverfolgungs posten? – jpic
Wie haben Sie 'AUTH_USER_MODEL' in Ihren Einstellungen definiert? In welcher Anwendung ist der Benutzer und wie lautet der Klassenname? – matino
@matino - ja, es ist in den Einstellungen definiert. get_user_model() funktioniert in allen anderen Dateien außer models.py. Mein benutzerdefiniertes Modell AuthUser in MeineAnw (in diesem Beispiel) definiert – askvictor