我的项目使用userena,在某些地方称为django.db.models.get_model。 它用于获取配置文件模型,它放在profiles.Profile中。它在INSTALLED_APPS中,所以它应该返回正常,但有时(似乎不可预测,主要是在apache重启后)get_model为此模型返回None(profiles.Profile)。并且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版本。更新到lates版本后,bug就消失了。