@@ -31,9 +31,14 @@ class EnumType(Enum):
3131
3232
3333class Embedded (EmbeddedDocument ):
34+ meta = {'allow_inheritance' : True }
3435 name = StringField ()
3536
3637
38+ class HeritageEmbedded (Embedded ):
39+ lastname = StringField ()
40+
41+
3742class TestModel (Document ):
3843 id = StringField (default = uuid_field ('PK' ), primary_key = True )
3944 str_field = StringField ()
@@ -50,6 +55,7 @@ class TestModel(Document):
5055 enum_list_field = ListField (EnumField (EnumType ), default = [EnumType .member ])
5156 embedded_list_field = ListField (EmbeddedDocumentField (Embedded ))
5257 embedded_field = EmbeddedDocumentField (Embedded )
58+ heritage_field = EmbeddedDocumentField (HeritageEmbedded )
5359 lazzy_field = LazyReferenceField (Reference )
5460 lazzy_list_field = ListField (LazyReferenceField (Reference ))
5561 generic_lazzy_field = GenericLazyReferenceField ()
@@ -61,7 +67,10 @@ def test_mongo_to_dict():
6167 reference = Reference ()
6268 reference .save ()
6369 model = TestModel (
64- embedded_list_field = [Embedded (name = '' )], lazzy_list_field = [reference ]
70+ embedded_list_field = [Embedded (name = '' )],
71+ lazzy_list_field = [reference ],
72+ embedded_field = Embedded (name = 'Peter' ),
73+ heritage_field = HeritageEmbedded (name = 'some' , lastname = 'other' ),
6574 )
6675 model .save ()
6776 model_dict = mongo_to_dict (model , exclude_fields = ['str_field' ])
@@ -78,7 +87,11 @@ def test_mongo_to_dict():
7887 assert model_dict ['list_field' ] == ['42' ]
7988 assert model_dict ['enum_list_field' ] == ['name' ]
8089 assert model_dict ['embedded_list_field' ] == [{'name' : '' }]
81- assert model_dict ['embedded_field' ] == {}
90+ assert model_dict ['embedded_field' ] == {'name' : 'Peter' }
8291 assert model_dict ['lazzy_field_uri' ] is None
8392 assert model_dict ['generic_lazzy_field_uri' ] is None
8493 assert model_dict ['lazzy_list_field_uris' ] == ["Reference object" ]
94+ assert model_dict ['heritage_field' ] == {
95+ 'name' : 'some' ,
96+ 'lastname' : 'other' ,
97+ }
0 commit comments