我将1.1.1 Django项目切换到1.3.1。在urls.py中调用admin.autodiscovery()时,在管理框架中从sites.py引发一个异常,声明:
ImproperlyConfigured at /
Put 'django.contrib.contenttypes' in your INSTALLED_APPS setting in order
to use the admin application
在settings.py中,我有:
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
# Uncomment the next line to enable the admin:
'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
'my.app'
)
我检查过的东西:
- contenttypes框架确实在我的INSTALLED_APPS设置中
- 我没有在其他地方重复INSTALLED_APPS声明
- INSTALLED_APPS中的contenttypes条目列在admin条目之前
- 运行django-admin.py shell并导入"django.contrib.contenttypes"就可以了
如果我转到管理中的违规行(Django-1.3.1/jango/controib/admin/sites.py in check_dependences,第164行),我会看到:
if not ContentType._meta.installed:
raise ImproperlyConfigured(...)
如果我评论掉检查,我可以运行我的项目和管理员工作。我不确定如何在模型类型上设置_meta.installed属性,所以我不知道下一步该怎么办。
我还应该注意到,这个相同的Django 1.3.1安装正在使用类似的设置文件与其他项目一起工作。
任何提示或资源都将不胜感激!谢谢
django.contrib.conttypes包括两个模型,ContentType和ContentTypeManager。我的猜测是,在向INSTALLED_APPS添加django.contri.contenttypes之后,您还没有运行manage.py syncdb
。
这将使if not ContentType._meta.installed
检查变得容易理解:ContentType模型在数据库中还不可用。