Merge pull request #419 from tochev/fix-select-related-reset

Fix reset of .select_related
This commit is contained in:
Dirk Eschler 2017-07-25 21:08:35 +02:00 committed by GitHub
commit c739a1e8b3
2 changed files with 19 additions and 1 deletions

View file

@ -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

View file

@ -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'))