Skip to content

Commit 1908356

Browse files
authored
_cls field remove from mongo_to_dict (#69)
* cheve * roger knows
1 parent 01e55db commit 1908356

File tree

4 files changed

+20
-4
lines changed

4 files changed

+20
-4
lines changed

mongoengine_plus/models/helpers.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@ def mongo_to_dict(obj, exclude_fields: list = None) -> dict:
4545
if exclude_fields is None:
4646
exclude_fields = []
4747

48+
# remove _cls from heritage embedded fields
49+
50+
exclude_fields.append('_cls')
4851
for field_name in obj._fields:
4952

5053
if field_name in exclude_fields:

mongoengine_plus/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = '0.0.3'
1+
__version__ = '0.0.4'

requirements-test.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
black==21.5b1
1+
black==22.3.0
22
flake8==3.9.*
33
isort==5.8.*
44
mypy==0.812

tests/models/test_helpers.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,14 @@ class EnumType(Enum):
3131

3232

3333
class Embedded(EmbeddedDocument):
34+
meta = {'allow_inheritance': True}
3435
name = StringField()
3536

3637

38+
class HeritageEmbedded(Embedded):
39+
lastname = StringField()
40+
41+
3742
class 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

Comments
 (0)