diff --git a/facho/model/fields/model.py b/facho/model/fields/model.py index 162be39..073504d 100644 --- a/facho/model/fields/model.py +++ b/facho/model/fields/model.py @@ -1,9 +1,10 @@ from .field import Field class Model(Field): - def __init__(self, model, namespace=None): + def __init__(self, model, name=None, namespace=None): self.model = model self.namespace = namespace + self.field_name = name def __get__(self, inst, cls): if inst is None: @@ -20,6 +21,8 @@ class Model(Field): return inst._fields[self.name] except KeyError: obj = self.model() + if self.field_name is not None: + obj.__name__ = self.field_name self._set_namespace(obj, self.namespace, inst.__namespace__) inst._fields[self.name] = obj return obj diff --git a/tests/test_model.py b/tests/test_model.py index b2c63b4..a4fd540 100644 --- a/tests/test_model.py +++ b/tests/test_model.py @@ -108,6 +108,20 @@ def test_field_model_failed_initialization(): person.id = 33 assert "33" == person.to_xml() +def test_field_model_with_custom_name(): + class ID(facho.model.Model): + __name__ = 'ID' + + class Person(facho.model.Model): + __name__ = 'Person' + + id = fields.Model(ID, name='DID') + + + person = Person() + person.id = 33 + assert "33" == person.to_xml() + def test_field_model_default_initialization_with_attributes(): class ID(facho.model.Model): __name__ = 'ID'