diff options
| author | Esau Rodriguez <esauro@gmail.com> | 2014-02-21 06:43:08 +0000 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2014-05-18 15:52:07 -0400 |
| commit | ec9043ab2f6027da709d1daf0df5599db6a77453 (patch) | |
| tree | 7e113d267b22c93959db9466cf9690431cc81a9f | |
| parent | 5a2556afb9b1b3ef6e0622552970c67ac84ecd28 (diff) | |
Fixed #21799 - Modified loaddata --ignorenonexistent to ignore models.
| -rw-r--r-- | django/core/serializers/python.py | 8 | ||||
| -rw-r--r-- | docs/ref/django-admin.txt | 9 | ||||
| -rw-r--r-- | docs/releases/1.8.txt | 3 | ||||
| -rw-r--r-- | tests/fixtures_regress/fixtures/sequence_extra.json | 11 |
4 files changed, 27 insertions, 4 deletions
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 + } } ] |
