File tree Expand file tree Collapse file tree 2 files changed +32
-0
lines changed Expand file tree Collapse file tree 2 files changed +32
-0
lines changed Original file line number Diff line number Diff line change @@ -183,3 +183,12 @@ def __data__(self):
183183 """Read only dictionary of model fields/values."""
184184 return dict ((field .name , field .get_value (self ))
185185 for field in self .__class__ .__fields__ )
186+
187+ def get (self , field_name , default = None ):
188+ """DomainModel analogue for dict.get python built-in method.
189+
190+ :param string field_name:
191+ :param mixed default:
192+ """
193+ value = getattr (self , field_name )
194+ return value if value else default
Original file line number Diff line number Diff line change @@ -164,6 +164,29 @@ class Model2(models.DomainModel):
164164
165165 field = Model1 .field
166166
167+ def test_get_method (self ):
168+ class SomeModel (models .DomainModel ):
169+ """Test domain model."""
170+ id = fields .Int ()
171+ name = fields .String ()
172+ not_required = fields .String ()
173+
174+ model = SomeModel ()
175+ model .id = 2
176+ model .name = 'some-name'
177+
178+ id = model .get ('id' , 0 )
179+ self .assertEqual (id , 2 )
180+
181+ name = model .get ('name' , '' )
182+ self .assertEqual (name , 'some-name' )
183+
184+ not_required = model .get ('not_required' , '' )
185+ self .assertEqual (not_required , '' )
186+
187+ with self .assertRaises (AttributeError ):
188+ model .get ('unknown' )
189+
167190
168191class ModelReprTests (unittest .TestCase ):
169192 """Tests for model Pythonic representation."""
You can’t perform that action at this time.
0 commit comments