Python 文档中的嵌入文档不';初始化
我第一次使用drf_mongoengine,在设置模型时遇到问题。我希望文档按如下方式初始化: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":[] } } } 创建的文档没有“元数据”字段。我错过了什么 型号: 类别检测器
{
"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