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'