我的项目使用 userena,它在某个地方称为 django.db.models.get_model。它用于获取配置文件模型,该模型放置在profiles.Profile中。它在 INSTALLED_APPS 中,所以它应该返回正常,但有时(似乎不可预测,主要是在 apache 重启后)get_model 对此模型(profiles.Profile)返回 None。并且 userena 引发 SiteProfileNotAvailable 错误。
AUTH_PROFILE_MODULE = 'profiles.Profile'
起初我认为 userena 向 get_model 传递了错误的参数,但我仔细检查了这一点,它确实传递了 app_label='profile' 和 model_name='Profile'。
然后我尝试打开 python manage.py shell,导入 get_model 并调用它: get_model('profile', 'Profile')
它返回有效的 Profile 模型。我从 shell 中退出,在这样做之后,网站神奇地工作了。但是在 apache 重新启动后,它再次引发了同样的错误。也许这个动作更新了缓存,我不知道。
在我的本地机器上它从未发生过,所以我认为它与 apache 有某种联系。
更新:问题是 django1.4-alpha 版本。更新到最新版本后,错误消失了。