我有一个具有以下属性的模型。
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有另一种方法吗?
答案 0 :(得分: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字段的嵌套表单输入。但您仍可以使用原始数据视图。