diff --git a/django/core/serializers/python.py b/django/core/serializers/python.py index 249dc5a054..aa21598695 100644 --- a/django/core/serializers/python.py +++ b/django/core/serializers/python.py @@ -90,7 +90,13 @@ def Deserializer(object_list, **options): for d in object_list: # Look up the model and starting build a dict of data for it. - Model = _get_model(d["model"]) + try: + Model = _get_model(d["model"]) + except base.DeserializationError as e: + if ignore: + continue + else: + raise e data = {} if 'pk' in d: data[Model._meta.pk.attname] = Model._meta.pk.to_python(d.get("pk", None)) diff --git a/docs/ref/django-admin.txt b/docs/ref/django-admin.txt index 7ceddb9cc2..fe1d8dbc38 100644 --- a/docs/ref/django-admin.txt +++ b/docs/ref/django-admin.txt @@ -383,14 +383,17 @@ onto which the data will be loaded. .. django-admin-option:: --ignorenonexistent -The :djadminopt:`--ignorenonexistent` option can be used to ignore fields that -may have been removed from models since the fixture was originally generated. - +The :djadminopt:`--ignorenonexistent` option can be used to ignore fields and +models that may have been removed since the fixture was originally generated. .. versionchanged:: 1.7 ``--app`` was added. +.. versionchanged:: 1.8 + + ``--ignorenonexistent`` also ignores non-existent models. + .. django-admin-option:: --app The :djadminopt:`--app` option can be used to specify a single app to look diff --git a/docs/releases/1.8.txt b/docs/releases/1.8.txt index 94a4f3ed74..6b0cb85058 100644 --- a/docs/releases/1.8.txt +++ b/docs/releases/1.8.txt @@ -145,6 +145,9 @@ Management Commands :djadminopt:`--exclude` which allows exclusion of specific locales from processing. +* The :djadminopt:`--ignorenonexistent` option of the :djadmin:`loaddata` + management command now ignores data for models that no longer exist. + Models ^^^^^^ diff --git a/tests/fixtures_regress/fixtures/sequence_extra.json b/tests/fixtures_regress/fixtures/sequence_extra.json index 03c0f36696..d668ef6143 100644 --- a/tests/fixtures_regress/fixtures/sequence_extra.json +++ b/tests/fixtures_regress/fixtures/sequence_extra.json @@ -9,5 +9,16 @@ "count": 3, "weight": 1.2 } + }, + { + "pk": "1", + "model": "fixtures_regress.animal_extra", + "fields": { + "name": "Non-existent model", + "extra_name": "test for ticket #21799", + "latin_name": "Panthera leo", + "count": 3, + "weight": 1.2 + } } ]