ImportError: cannot import name update_all_contenttypes

Troy picture Troy · Apr 10, 2015 · Viewed 8.4k times · Source

I upgraded recently to Django 1.8. In previous versions of Django, the following import was fine:

from django.contrib.contenttypes.management import update_all_contenttypes

But update_all_contenttypes appears to have been silently removed in Django 1.8 (it was there in 1.7.7). I'm not seeing anything in the 1.8 release notes about its removal... Does anyone know what the modern replacement is for that function?

Answer

Troy picture Troy · Apr 10, 2015

It's unclear why that function was removed in 1.8, but it appears that the modern replacement is to just re-invent that wheel:

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)