From a7b5102c43eaa88e39297ce8da35be7b5f9b2655 Mon Sep 17 00:00:00 2001 From: Jacek Tomaszewski Date: Fri, 19 Aug 2016 21:20:36 +0200 Subject: [PATCH] Fix deferred classes signal connection (close #379). --- modeltranslation/tests/tests.py | 7 +++++++ modeltranslation/translator.py | 7 ++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/modeltranslation/tests/tests.py b/modeltranslation/tests/tests.py index 1d52c17..3f894ef 100644 --- a/modeltranslation/tests/tests.py +++ b/modeltranslation/tests/tests.py @@ -2958,6 +2958,13 @@ class TestManager(ModeltranslationTestBase): self.assertIn('text_en', dir(item1.__class__)) self.assertIn('text_de', dir(item1.__class__)) + def test_deferred_rule2(self): + models.TestModel.objects.create(title_de='title_de', title_en='title_en') + o = models.TestModel.objects.only('title')[0] + self.assertEqual(o.title, "title_en") + o.title = "bla" + self.assertEqual(o.title, "bla") + 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')) diff --git a/modeltranslation/translator.py b/modeltranslation/translator.py index 2f12823..1188027 100644 --- a/modeltranslation/translator.py +++ b/modeltranslation/translator.py @@ -490,7 +490,12 @@ class Translator(object): patch_constructor(model) # Connect signal for model - post_init.connect(delete_mt_init, sender=model) + if NEW_DEFERRED_API: + post_init.connect(delete_mt_init, sender=model) + else: + # deferred models have their own classes and the `sender` does not match. + # Connect signal for all models. + post_init.connect(delete_mt_init, dispatch_uid="modeltranslation") # Patch clean_fields to verify form field clearing patch_clean_fields(model)