2016-10-04 6 views
0

У меня есть модель со следующими атрибутами.MapField не отображается в 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 

Он просто дает следующий результат:

enter image description here

Но я хотел, чтобы обратиться к дереву подобную структуру со всеми полями из класса AudioImage. Я пропустил что-нибудь? Или есть другой способ для MapField?

ответ

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. Но вы все равно можете использовать просмотр необработанных данных.

Смежные вопросы