From 6cc4610b458603a3999710f7a04712b9363bd145 Mon Sep 17 00:00:00 2001 From: bit4bit Date: Thu, 24 Jun 2021 01:18:27 +0000 Subject: [PATCH] fields.Model se permite cambiar el nombre de la etiqueta FossilOrigin-Name: 896b797629e426a5e366d5be76fc00c3cc272299d6749e40f8317893b1545a9e --- facho/model/fields/model.py | 5 ++++- tests/test_model.py | 14 ++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) 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'