django:添加tastypie到INSTALLED APPS后出现AppRegistryNotReady异常
我现在在用Django 1.7rc2,已经创建了一些模型。当我运行命令 ./manage.py shell 时,一切都很顺利。但是,一旦我把tastypie(我用的是最新的稳定版本0.11.1)加到INSTALLED_APPS里,就在运行 ./manage.py shell 时出现了一个异常。
Traceback (most recent call last):
File "manage.py", line 16, in <module>
execute_from_command_line(sys.argv)
File "/home/miki/project/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line
utility.execute()
File "/home/miki/project/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 354, in execute
django.setup()
File "/home/miki/project/local/lib/python2.7/site-packages/django/__init__.py", line 21, in setup
apps.populate(settings.INSTALLED_APPS)
File "/home/miki/project/local/lib/python2.7/site-packages/django/apps/registry.py", line 108, in populate
app_config.import_models(all_models)
File "/home/miki/project/local/lib/python2.7/site-packages/django/apps/config.py", line 197, in import_models
self.models_module = import_module(models_module_name)
File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
File "/home/miki/project/local/lib/python2.7/site-packages/tastypie/models.py", line 31, in <module>
from tastypie.compat import AUTH_USER_MODEL
File "/home/miki/project/local/lib/python2.7/site-packages/tastypie/compat.py", line 13, in <module>
User = get_user_model()
File "/home/miki/project/local/lib/python2.7/site-packages/django/contrib/auth/__init__.py", line 136, in get_user_model
return django_apps.get_model(settings.AUTH_USER_MODEL)
File "/home/miki/project/local/lib/python2.7/site-packages/django/apps/registry.py", line 199, in get_model
self.check_models_ready()
File "/home/miki/project/local/lib/python2.7/site-packages/django/apps/registry.py", line 131, in check_models_ready
raise AppRegistryNotReady("Models aren't loaded yet.")
django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet.
我在网上查了一下,发现这个异常通常是在独立脚本运行时才会出现,但我并不是这种情况。而且,在Django的文档里也提到过
Another common culprit is django.contrib.auth.get_user_model(). Use the AUTH_USER_MODEL setting to reference the User model at import time.
不过我在我的设置里已经配置好了这些选项。
# The model to use to represent a User.
AUTH_USER_MODEL = 'customuser.CustomUser'
这个错误是出在我的代码里,还是tastypie本身有问题呢?
2 个回答
0
这个提示的意思不仅仅是你在设置里定义了这个,而是你应该把这个设置作为任何指向用户的外键的目标,而不是使用get_user_model()。
-1
Daniels的回答让我找到了问题的解决办法,不过后来tastypie出了新版本,已经解决了这个问题。