Sto lavorando a un progetto Django 1.5 e ho un modello utente personalizzato (chiamiamolo CustomUser
). Un'altra app (SomeApp) deve fare riferimento a questo modello utente personalizzato. Ai fini della ForeignKey e simili, la documentazione Django dice di usareDjango 1.5: Accesso ai campi del modello utente personalizzato in models.py
User = settings.AUTH_USER_MODEL
Tuttavia, alcune funzioni in SomeApp.models necessità di accedere a quello che sarebbe stato precedentemente noto come User.objects
. Ma Utente ora è una stringa e non una classe, quindi User.objects
non riesce. L'alternativa sarebbe
from django.contrib.auth import get_user_model
User = get_user_model()
che funziona in altri moduli, ma quando uso questo models.py di SomeApp, Django genera un errore:
ImproperlyConfigured("AUTH_USER_MODEL refers to model '%s' that has not been installed" % settings.AUTH_USER_MODEL)
Tutte le idee?
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 impostazioni:
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',
)
È possibile caricare il traceback completo? – jpic
Come hai definito "AUTH_USER_MODEL" nelle tue impostazioni? In quale applicazione è l'utente e qual è il nome della classe per esso? – matino
@matino - sì, è definito nelle impostazioni. get_user_model() funziona bene in tutti gli altri file tranne models.py. Il mio modello utente personalizzato AuthUser è definito in MiaApp (in questo esempio) – askvictor