/ / ImportError: Name kann nicht importiert werden update_all_contenttypes - django, django-1.8

ImportError: Name kann nicht importiert werden update_all_contenttypes - django, django-1.8

Ich habe kürzlich auf Django 1.8 aktualisiert. In früheren Versionen von Django war folgender Import in Ordnung:

from django.contrib.contenttypes.management import update_all_contenttypes

Aber update_all_contenttypes scheint in Django 1.8 stillgelegt worden zu sein (es war dort in 1.7.7). Ich sehe nichts in der 1.8 Versionshinweise über seine Entfernung ... Weiß jemand, was der moderne Ersatz für diese Funktion ist?

Antworten:

8 für die Antwort № 1

Es ist unklar, warum diese Funktion in 1.8 entfernt wurde, aber es scheint, dass der moderne Ersatz dieses Rad nur neu erfinden soll:

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 für die Antwort № 2

Es scheint, dass das Django-Team die update_contenttypes-Funktion ohne eine Erwähnung in den Versionshinweisen entfernt hat, da es sich nicht um eine dokumentierte öffentliche API handelt (wie hier gesagt: https://code.djangoproject.com/ticket/28092)

Jetzt können Sie stattdessen die neue Funktion create_contenttypes verwenden, wie Sie hier sehen können: https://github.com/django/django/commit/6a2af01452966d10155b720f4f5e7b09c7e3e419