Python 文档中的嵌入文档不';初始化

Python 文档中的嵌入文档不';初始化,python,django,django-rest-framework,restframeworkmongoengine,Python,Django,Django Rest Framework,Restframeworkmongoengine,我第一次使用drf_mongoengine,在设置模型时遇到问题。我希望文档按如下方式初始化: { "name" : "new_name", "metadata": { "total_efficiency": 0.0, "eff_vs_layer_thickness":{ "x":[], "y":[] } } } 创建的文档没有“元数据”字段。我错过了什么 型号: 类别检测器

我第一次使用drf_mongoengine,在设置模型时遇到问题。我希望文档按如下方式初始化:

{
    "name" : "new_name",
    "metadata": {
        "total_efficiency": 0.0,
        "eff_vs_layer_thickness":{
            "x":[],
            "y":[]
        }
    }
}
创建的文档没有“元数据”字段。我错过了什么

型号: 类别检测器(文件): name=fields.StringField(null=True) 元数据=字段。EmbeddedDocumentField(元数据,null=False)

序列化程序:

class DetectorSerializer(mongoserializers.DocumentSerializer):
     class Meta:
        model = Detector
        fields = '__all__'

 class MetadataSerializer(mongoserializers.EmbeddedDocumentSerializer):
    class Meta:
        model = Metadata
        fields = '__all__'
视图:


@阿尔瓦卡莫纳,欢迎来到DRF-ME。你一般都做对了

只需要几件事:您不需要
MetadataSerializer
,因为它将在
DetectorSerializer
中自动创建

您也不应该将
mixin.UpdateModelMixin
mixin.DestroyModelMixin
混合到完整的视图集中(
viewsets.ModelViewSet
),而是将它们混合到
rest\u framework\u mongoengine.generics.GenericApiView
(如下所示:)

除此之外,我认为你做的一切都是对的。如果你能在github上向我展示你的项目,我可以提供更多帮助

更新:要将mixin混合到通用视图中,请执行以下操作,例如:


@阿尔瓦卡莫纳,欢迎来到DRF-ME。你一般都做对了

只需要几件事:您不需要
MetadataSerializer
,因为它将在
DetectorSerializer
中自动创建

您也不应该将
mixin.UpdateModelMixin
mixin.DestroyModelMixin
混合到完整的视图集中(
viewsets.ModelViewSet
),而是将它们混合到
rest\u framework\u mongoengine.generics.GenericApiView
(如下所示:)

除此之外,我认为你做的一切都是对的。如果你能在github上向我展示你的项目,我可以提供更多帮助

更新:要将mixin混合到通用视图中,请执行以下操作,例如:


谢谢@Boris Burkov,我意识到我创建的文档没有嵌入文档。我不明白如何将mixin混合到通用api视图中。我的回复是:@alvcarmona查看我对文章的更新,了解一个仅允许自定义操作子集的ViewSet示例。感谢@Boris Burkov,我意识到我创建的文档没有嵌入文档。我不明白如何将mixin混合到通用api视图中。我的回复是:@alvcarmona请参阅我对文章的更新,以获取仅允许自定义操作子集的ViewSet示例。
class DetectorSerializer(mongoserializers.DocumentSerializer):
     class Meta:
        model = Detector
        fields = '__all__'

 class MetadataSerializer(mongoserializers.EmbeddedDocumentSerializer):
    class Meta:
        model = Metadata
        fields = '__all__'
class DetectorViewSet(viewsets.ModelViewSet, mixins.UpdateModelMixin, mixins.DestroyModelMixin):
    '''
    Contains information about inputs/outputs of a single program
    that may be used in Universe workflows.
    '''
    lookup_field = 'id'
    serializer_class = DetectorSerializer
class PostPutViewSet(mixins.CreateModelMixin,
               mixins.UpdateModelMixin,
               GenericViewSet):
    """ Adaptation of DRF ModelViewSet """
    pass