ImportError:无法导入名称update_all_contenttypes

时间:2015-04-09 22:23:43

标签: django django-1.8

我最近升级到了Django 1.8。在以前版本的Django中,以下导入很好:

from django.contrib.contenttypes.management import update_all_contenttypes

但是update_all_contenttypes似乎已经在Django 1.8中被静默删除了(它在1.7.7中存在)。我在1.8 release notes中没有看到任何有关它被移除的内容......有谁知道现代替代品对于该功能是什么?

3 个答案:

答案 0 :(得分:9)

目前还不清楚为什么在1.8中删除了这个功能,但现代替代品似乎只是重新发明了那个轮子:

from django.apps import apps
from django.contrib.contenttypes.management import update_contenttypes

def update_all_contenttypes(**kwargs):
    for app_config in apps.get_app_configs():
        update_contenttypes(app_config, **kwargs)

答案 1 :(得分:1)

似乎django团队已经删除了update_contenttypes函数而没有在发行说明中提及,因为它不是一个记录在案的公共API。 (如此处所说:https://code.djangoproject.com/ticket/28092

现在您可以使用新函数create_contenttypes,如下所示: https://github.com/django/django/commit/6a2af01452966d10155b720f4f5e7b09c7e3e419

答案 2 :(得分:0)

  • 转到系统中“django.contrib.contenttypes”的位置(检查python的“sire-packages”文件夹)
  • 打开 app.py(您可以在终端窗口中使用 vi app.py)
  • 将“update_contenttypes”替换为“create_contenttypes”
  • 保存文件('ESC'、':' 和'wq' - 在 vi​​ 编辑器中)

然后尝试运行服务器