From 74929c20552b247df14bbcfdb8b714eb3124e9aa Mon Sep 17 00:00:00 2001 From: Tocho Tochev Date: Tue, 25 Jul 2017 13:31:57 +0300 Subject: [PATCH] Fix reset of .select_related --- modeltranslation/manager.py | 5 ++++- modeltranslation/tests/tests.py | 15 +++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/modeltranslation/manager.py b/modeltranslation/manager.py index 08d3adc..0d41d4b 100644 --- a/modeltranslation/manager.py +++ b/modeltranslation/manager.py @@ -255,7 +255,10 @@ class MultilingualQuerySet(models.query.QuerySet): # new_args = append_lookup_keys(self.model, fields) new_args = [] for key in fields: - new_args.append(rewrite_lookup_key(self.model, key)) + if key is None: + new_args.append(None) + else: + new_args.append(rewrite_lookup_key(self.model, key)) return super(MultilingualQuerySet, self).select_related(*new_args, **kwargs) # This method was not present in django-linguo diff --git a/modeltranslation/tests/tests.py b/modeltranslation/tests/tests.py index ce7d92c..678d59f 100644 --- a/modeltranslation/tests/tests.py +++ b/modeltranslation/tests/tests.py @@ -2966,6 +2966,21 @@ class TestManager(ModeltranslationTestBase): o.title = "bla" self.assertEqual(o.title, "bla") + def test_select_related(self): + test = models.TestModel.objects.create(title_de='title_de', title_en='title_en') + with auto_populate('all'): + models.ForeignKeyModel.objects.create(untrans=test) + + fk_qs = models.ForeignKeyModel.objects.all() + self.assertNotIn('_untrans_cache', fk_qs[0].__dict__) + self.assertIn('_untrans_cache', fk_qs.select_related('untrans')[0].__dict__) + self.assertNotIn( + '_untrans_cache', + fk_qs.select_related('untrans').select_related(None)[0].__dict__ + ) + # untrans is nullable so not included when select_related=True + self.assertNotIn('_untrans_cache', fk_qs.select_related()[0].__dict__) + def test_translation_fields_appending(self): from modeltranslation.manager import append_lookup_keys, append_lookup_key self.assertEqual(set(['untrans']), append_lookup_key(models.ForeignKeyModel, 'untrans'))