drf-mongoengine DynamicDocumentSerializer 不包含嵌入字段

drf-mongoengine DynamicDocumentSerializer doesn't include embedded field

我正在使用

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)

这是序列化器

from rest_framework_mongoengine.serializers import DynamicDocumentSerializer

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

但在我的 api returns 中只有 field1, field2, field3。即使在明确提到 field4

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

好吧,您必须为此创建一个单独的序列化程序并将其包含在您的主序列化程序中

创建 Model2 序列化程序

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

并包含在您的序列化程序中

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