2016-10-04 52 views
0

我有一個模型具有以下屬性。MapField不顯示在Django Rest框架Mongoengine

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

我試圖使用Django的REST框架Mongoengine如下:

from rest_framework_mongoengine.serializers import DocumentSerializer 

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

它只是給出了下面的輸出:

enter image description here

但我希望它解決了樹與AudioImage類中的所有字段一樣。 我錯過了什麼嗎?或者MapField有另一種方法嗎?

回答

1

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)) 

注意,可瀏覽API將無法爲EmbeddedDocument字段顯示嵌套形式輸入。但是你仍然可以使用原始數據視圖。