将Django 1.1.1升级到1.3.1,admin.autodiscover()会引发请求内容类型的异常



我将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'
)

我检查过的东西:

  1. contenttypes框架确实在我的INSTALLED_APPS设置中
  2. 我没有在其他地方重复INSTALLED_APPS声明
  3. INSTALLED_APPS中的contenttypes条目列在admin条目之前
  4. 运行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模型在数据库中还不可用。

最新更新