From 9fecb86a5221982ea753270b7d2b4c6487f79941 Mon Sep 17 00:00:00 2001 From: Claude Paroz Date: Sun, 21 Dec 2014 14:24:15 +0100 Subject: Fixed #17946 -- Fixed deserialization of self-referencing M2M fields Thanks Philip Mountifield for the report and excellent analysis, and Simon Charette for the review. --- tests/fixtures_regress/fixtures/m2mtoself.json | 1 + tests/fixtures_regress/models.py | 4 ++++ tests/fixtures_regress/tests.py | 10 ++++++++++ 3 files changed, 15 insertions(+) create mode 100644 tests/fixtures_regress/fixtures/m2mtoself.json (limited to 'tests') diff --git a/tests/fixtures_regress/fixtures/m2mtoself.json b/tests/fixtures_regress/fixtures/m2mtoself.json new file mode 100644 index 0000000000..b904ba36e0 --- /dev/null +++ b/tests/fixtures_regress/fixtures/m2mtoself.json @@ -0,0 +1 @@ +[{"fields": {"parent": [1]}, "model": "fixtures_regress.m2mtoself", "pk": 1}] diff --git a/tests/fixtures_regress/models.py b/tests/fixtures_regress/models.py index f75b1e02d0..cd381e92bd 100644 --- a/tests/fixtures_regress/models.py +++ b/tests/fixtures_regress/models.py @@ -248,6 +248,10 @@ class Thingy(models.Model): name = models.CharField(max_length=255) +class M2MToSelf(models.Model): + parent = models.ManyToManyField("self", blank=True, null=True) + + @python_2_unicode_compatible class BaseNKModel(models.Model): """ diff --git a/tests/fixtures_regress/tests.py b/tests/fixtures_regress/tests.py index 89b8fb17ef..a91935af8f 100644 --- a/tests/fixtures_regress/tests.py +++ b/tests/fixtures_regress/tests.py @@ -487,6 +487,16 @@ class TestFixtures(TestCase): verbosity=0, ) + def test_loaddata_with_m2m_to_self(self): + """ + Regression test for ticket #17946. + """ + management.call_command( + 'loaddata', + 'm2mtoself.json', + verbosity=0, + ) + @override_settings(FIXTURE_DIRS=[os.path.join(_cur_dir, 'fixtures_1'), os.path.join(_cur_dir, 'fixtures_1')]) def test_fixture_dirs_with_duplicates(self): -- cgit v1.3