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 字段的嵌套表单输入。但您仍然可以使用原始数据视图。
我有一个具有以下属性的模型。
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 字段的嵌套表单输入。但您仍然可以使用原始数据视图。