Tôi đang làm việc trên dự án Django 1.5 và tôi có một mô hình người dùng tùy chỉnh (hãy gọi nó là CustomUser
). Một ứng dụng khác (SomeApp) cần tham khảo mô hình người dùng tùy chỉnh này. Theo mục đích của ForeignKey và như vậy, các tài liệu Django nói để sử dụngDjango 1.5: Truy cập các trường mô hình người dùng tùy chỉnh trong models.py
User = settings.AUTH_USER_MODEL
Tuy nhiên, một số chức năng trong SomeApp.models cần truy cập vào điều gì sẽ trước đây được biết đến như User.objects
. Nhưng người dùng bây giờ là một chuỗi và không phải là một lớp, do đó, User.objects
không thành công. Việc thay thế sẽ
from django.contrib.auth import get_user_model
User = get_user_model()
Những công trình trong các module khác, nhưng khi tôi sử dụng này trong models.py của SomeApp, Django đặt ra một lỗi:
ImproperlyConfigured("AUTH_USER_MODEL refers to model '%s' that has not been installed" % settings.AUTH_USER_MODEL)
Bất kỳ ý tưởng?
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 cài đặt:
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',
)
Bạn có thể đăng toàn bộ lượt truy cập không? – jpic
Bạn đã xác định 'AUTH_USER_MODEL' như thế nào trong cài đặt của mình? Trong đó ứng dụng là người dùng và tên lớp cho nó là gì? – matino
@matino - vâng, nó được xác định trong cài đặt. get_user_model() hoạt động tốt trong tất cả các tệp khác ngoại trừ models.py. Mô hình người dùng tùy chỉnh AuthUser của tôi được định nghĩa trong MyApp (trong ví dụ này) – askvictor