@@ -93,6 +93,19 @@ def _converter(self, value):
93
93
"""
94
94
return value
95
95
96
+ @staticmethod
97
+ def _get_model_instance (model_cls , data ):
98
+ """Convert dict into object of class of passed model.
99
+
100
+ :param class model_cls:
101
+ :param object data:
102
+ :rtype DomainModel:
103
+ """
104
+ if not isinstance (data , (model_cls , dict )):
105
+ raise TypeError ('{0} is not valid type, instance of '
106
+ '{1} or dict required' .format (data , model_cls ))
107
+ return model_cls (** data ) if isinstance (data , dict ) else data
108
+
96
109
97
110
class Bool (Field ):
98
111
"""Bool field."""
@@ -160,7 +173,6 @@ class Model(Field):
160
173
def __init__ (self , related_model_cls , default = None , required = False ):
161
174
"""Initializer."""
162
175
super (Model , self ).__init__ (default = default , required = required )
163
-
164
176
self .related_model_cls = related_model_cls
165
177
166
178
def _converter (self , value ):
@@ -169,14 +181,7 @@ def _converter(self, value):
169
181
:param object value:
170
182
:rtype object:
171
183
"""
172
- value = self .related_model_cls (** value ) if isinstance (value ,
173
- dict ) else value
174
- if not isinstance (value , self .related_model_cls ):
175
- raise TypeError ('{0} is not valid model instance, instance of '
176
- '{1} required' .format (value ,
177
- self .related_model_cls ))
178
-
179
- return value
184
+ return self ._get_model_instance (self .related_model_cls , value )
180
185
181
186
def get_builtin_type (self , model ):
182
187
"""Return built-in type representation of Model.
@@ -203,10 +208,8 @@ def _converter(self, value):
203
208
"""
204
209
if type (value ) is not self .related_model_cls .Collection :
205
210
value = self .related_model_cls .Collection ([
206
- self .related_model_cls (** item )
207
- if isinstance (item , dict )
208
- else item
209
- for item in value ])
211
+ self ._get_model_instance (self .related_model_cls , item )
212
+ for item in value ])
210
213
return value
211
214
212
215
def get_builtin_type (self , model ):
0 commit comments