diff --git a/localized_fields/models.py b/localized_fields/models.py index 5ab1b1b..1d94196 100644 --- a/localized_fields/models.py +++ b/localized_fields/models.py @@ -23,7 +23,11 @@ class LocalizedModel(models.Model): continue value = getattr(self, field.name, None) + if not isinstance(value, LocalizedValue): - value = LocalizedValue() + if isinstance(value, dict): + value = LocalizedValue(value) + else: + value = LocalizedValue() setattr(self, field.name, value) diff --git a/tests/test_localized_model.py b/tests/test_localized_model.py index d385984..962c41a 100644 --- a/tests/test_localized_model.py +++ b/tests/test_localized_model.py @@ -27,3 +27,23 @@ class LocalizedModelTestCase(TestCase): obj = cls.TestModel() assert isinstance(obj.title, LocalizedValue) + + + @classmethod + def test_model_init_kwargs(cls): + """Tests whether all :see:LocalizedField + fields are assigned an empty :see:LocalizedValue + instance when the model is instanitiated.""" + data = { + 'title': { + 'en': 'english_title', + 'ro': 'romanian_title', + 'nl': 'dutch_title' + } + } + obj = cls.TestModel(**data) + + assert isinstance(obj.title, LocalizedValue) + assert obj.title.en == 'english_title' + assert obj.title.ro == 'romanian_title' + assert obj.title.nl == 'dutch_title' \ No newline at end of file