django:添加tastypie到INSTALLED APPS后出现AppRegistryNotReady异常

2 投票
2 回答
757 浏览
提问于 2025-04-18 18:12

我现在在用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出了新版本,已经解决了这个问题。

撰写回答