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')
我正在使用
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')