se instancia modelo en caso de no existir para Many2One
FossilOrigin-Name: 006f6a780ae0436649addd2abe89eb6a9bfc5ad573ee1a1835a8f65ab039fd26
This commit is contained in:
		| @@ -25,3 +25,17 @@ class Field: | ||||
|  | ||||
|         if callable(call): | ||||
|             return call(*args) | ||||
|  | ||||
|     def _create_model(self, inst, name=None, model=None): | ||||
|         try: | ||||
|             return inst._fields[self.name] | ||||
|         except KeyError: | ||||
|             if model is not None: | ||||
|                 obj = model() | ||||
|             else: | ||||
|                 obj = self.model() | ||||
|             if name is not None: | ||||
|                 obj.__name__ = name | ||||
|             self._set_namespace(obj, self.namespace, inst.__namespace__) | ||||
|             inst._fields[self.name] = obj | ||||
|             return obj | ||||
|   | ||||
| @@ -13,15 +13,11 @@ class Many2One(Field): | ||||
|         if inst is None: | ||||
|             return self | ||||
|         assert self.name is not None | ||||
|         return inst._fields[self.name] | ||||
|         return self._create_model(inst) | ||||
|          | ||||
|     def __set__(self, inst, value): | ||||
|         assert self.name is not None | ||||
|         class_model = self.model | ||||
|         inst_model = class_model() | ||||
|  | ||||
|         self._set_namespace(inst_model, self.namespace,  inst.__namespace__) | ||||
|         inst._fields[self.name] = inst_model | ||||
|         inst_model = self._create_model(inst, model=self.model) | ||||
|  | ||||
|         # si hay setter manual se ejecuta | ||||
|         # de lo contrario se asigna como texto del elemento | ||||
|   | ||||
| @@ -10,20 +10,8 @@ class Model(Field): | ||||
|         if inst is None: | ||||
|             return self | ||||
|         assert self.name is not None | ||||
|         return self._create_model(inst) | ||||
|         return self._create_model(inst, name=self.field_name) | ||||
|  | ||||
|     def __set__(self, inst, value): | ||||
|         obj = self._create_model(inst) | ||||
|         obj._set_content(value) | ||||
|  | ||||
|     def _create_model(self, inst): | ||||
|         try: | ||||
|             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 | ||||
|              | ||||
|         obj = self._create_model(inst, name=self.field_name) | ||||
|         obj._set_content(value)             | ||||
|   | ||||
		Reference in New Issue
	
	Block a user