我第一次使用drf_mongoengine而且我在设置模型时遇到了问题。我希望文档初始化如下:
if getattr(form, 'admirer_or_model', form) == "model":
...
创建的文档没有"元数据"领域。我错过了什么?
型号: class Detector(文档): name = fields.StringField(null = True) metadata = fields.EmbeddedDocumentField(Metadata,null = False)
{
"name" : "new_name",
"metadata": {
"total_efficiency": 0.0,
"eff_vs_layer_thickness":{
"x":[],
"y":[]
}
}
}
串行:
class Metadata(EmbeddedDocument):
eff_vs_layer = fields.EmbeddedDocumentField(Plot)
total_efficiency = fields.DecimalField(null=True, default=0)
class Plot(EmbeddedDocument):
x = fields.ListField(fields.FloatField(null=True), default=[])
y = fields.ListField(fields.FloatField(null=True), default=[])
查看:
class DetectorSerializer(mongoserializers.DocumentSerializer):
class Meta:
model = Detector
fields = '__all__'
class MetadataSerializer(mongoserializers.EmbeddedDocumentSerializer):
class Meta:
model = Metadata
fields = '__all__'
答案 0 :(得分:0)
@alvcarmona,欢迎来到DRF-ME。你一般都做对了。
只需要做几件事:您不需要MetadataSerializer
,因为它会在DetectorSerializer
内自动创建。
您也不应该将mixins.UpdateModelMixin
和mixins.DestroyModelMixin
混合到一个完整的视图集(viewsets.ModelViewSet
)中,而是将它们混合到rest_framework_mongoengine.generics.GenericApiView
中(如下所示:{{ 3}})。
除此之外,我认为,你做的一切都是正确的。如果你能在github上向我展示你的项目,我可以提供更多帮助。
更新:将mixins混合到通用视图中,执行https://github.com/umutbozkurt/django-rest-framework-mongoengine/blob/master/rest_framework_mongoengine/generics.py#L16例如:
class PostPutViewSet(mixins.CreateModelMixin,
mixins.UpdateModelMixin,
GenericViewSet):
""" Adaptation of DRF ModelViewSet """
pass