Сериалайзер в запросе принимает id а в ответе возвращает object
Есть проект на Django + drango-rest-framework + django-rest-framework-mongoengine.
В поекте есть модель Question которая в филд tags принимает список референсов на другую модель - Tag.
# models.py
from mongoengine import Document, ListField, ReferenceField
class Tag(Document):
name = StringField(max_length=16, required=True)
class Question(Document):
title = StringField(max_length=128, required=True)
content = StringField(max_length=1024, required=True)
tags = ListField(ReferenceField(Tag))
Необходимо написать один сериалайзер который выполняет два требования:
- При записи сериалайзер принимает в филд
tagsсписокidсуществующих тэгов (по умолчанию так и работает).
Тело запроса:
{
"title": "Why?",
"content": "...",
"tags": [
"5f708f83f79f03c216ad9bb6",
"5f708f83f79f03c216ad9bc3",
"5f708f83f79f03c216ad9bf1"
]
}
- При чтении сериалайзер возвращает список
idиnameтэгов (по умолчанию возвращает только списокid)
Тело желаемого ответа:
{
"title": "Why?",
"content": "...",
"tags": [
{
"id": "5f708f83f79f03c216ad9bb6",
"name": "#django"
},
{
"id": "5f708f83f79f03c216ad9bc3",
"name": "#rest_framework"
},
{
"id": "5f708f83f79f03c216ad9bf1",
"name": "#mongoengine"
}
]
}
По отдельности эти эфекты достигаются без труда. Но вот вместе - нет.
# serializers.py
from rest_framework.fields import SerializerMethodField
from rest_framework_mongoengine.serializers import DocumentSerializer
from .models import Tag, Question
class TagSerializer(DocumentSerializer):
class Meta:
model = Tag
class QuestionSerializer(DocumentSerializer):
# Добовлением этой строчки достигается желаемый ответ. Но перестаёт, должным образом, работать запрос.
tags = TagSerializer(many=True)
class Meta:
model = Question
Благодарю вас.