【问题标题】:MapField is not displayed in Django Rest Framework MongoengineMapField 在 Django Rest Framework Mongoengine 中不显示
【发布时间】:2016-10-04 08:53:16
【问题描述】:

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

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 还有其他方法吗?

【问题讨论】:

    标签: django mongodb mongoengine restframeworkmongoengine


    【解决方案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 字段的嵌套表单输入。但您仍然可以使用原始数据视图。

    【讨论】:

      猜你喜欢
      • 2017-09-11
      • 1970-01-01
      • 2012-05-27
      • 2023-03-14
      • 1970-01-01
      • 2017-04-08
      • 1970-01-01
      • 2018-02-16
      • 2018-05-19
      相关资源
      最近更新 更多