Django Rest Framework Mongoengine 中不显示 MapField

MapField is not displayed in Django Rest Framework Mongoengine

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

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 class 中的所有字段来处理树状结构。 我错过了什么吗?或者 MapField 有另一种方式吗?

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

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

对应的EmbeddedDocument描述了AudioImageJSON的结构在哪里?

在那种情况下,您的 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 字段的嵌套表单输入。但您仍然可以使用原始数据视图。