0

我有一个具有以下属性的模型。

class File(DynamicDocument):
    country = fields.StringField(max_length=100, unique=True)
    languages = fields.MapField(fields.MapField(
        fields.EmbeddedDocumentField(AudioImage)))

我正在尝试使用 Django Rest Framework Mongoengine,如下所示:

from rest_framework_mongoengine.serializers import DocumentSerializer

class TestSerializer(DocumentSerializer):
    class Meta:
        model = File

它只是给出以下输出:

在此处输入图像描述

但我希望它也可以使用 AudioImage 类中的所有字段来处理树状结构。我错过了什么吗?或者 MapField 还有另一种方法吗?

4

1 回答 1

1

Sijan,您希望File文档具有以下结构是否正确:

{
    "country": "UK",
    "languages": {
        "hindi": AudioImageJSON,
        "russian": AudioImageJSON,
        "cockney": AudioImageJSON
    }
}

AudioImageJSON 的结构在哪里由相应的 EmbeddedDocument 描述?

在这种情况下,您的 DocumentSerializer 是正确的,并且您指定您的模型如下:

class AudioImage(EmbeddedDocument):
    content = fields.FileField()

class File(DynamicDocument):
    country = fields.StringField(max_length=100, unique=True)
    languages = fields.MapField(fields.EmbeddedDocumentField(AudioImage))

请注意,Browsable API 将无法显示 EmbeddedDocument 字段的嵌套表单输入。但是您仍然可以使用原始数据视图。

于 2016-11-24T11:21:11.323 回答