Wendy
Wendy

Reputation: 1603

drf-mongoengine DynamicDocumentSerializer doesn't include embedded field

I'm using

django-rest-framework-mongoengine==3.3.0

mongoengine==0.10.5

class MyModel2(mongoengine.EmbeddedDocument):
     sn = mongoengine.StringField()
     # more fields

class MyModel(mongoengine.DynamicDocument):
    field1 = mongoengine.StringField(unique=True)
    field2 = mongoengine.DateTimeField()
    field3 = mongoengine.BooleanField()
    field4 = mongoengine.EmbeddedDocumentField(MyModel2)

and here is the serializer

from rest_framework_mongoengine.serializers import DynamicDocumentSerializer

class MyModelSerializer(DynamicDocumentSerializer):
    class Meta:
        model = MyModel
        fields = ('field1', 'field4')

but in my api returns only field1, field2, field3. even after explicitly mentioning the field4

class myListAPI(generics.ListAPIView):
     model = MyModel
     serializer_class = MyModelSerializer
     queryset = MyModel.objects.all()

Upvotes: 1

Views: 182

Answers (1)

Gaurav Jain
Gaurav Jain

Reputation: 1855

Well, you have to create a separate serializer for that and include in your main serializer

create Model2 serializer

class MyModel2Serializer(DynamicDocumentSerializer):
    class Meta:
        model = MyModel2
        fields = ('sn',)

and include in your serializer

class MyModelSerializer(DynamicDocumentSerializer):
    field4 = MyModel2Serializer()
    class Meta:
        model = MyModel
        fields = ('field1', 'field4')

Upvotes: 1

Related Questions