Сериалайзер в запросе принимает 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))

Необходимо написать один сериалайзер который выполняет два требования:

  1. При записи сериалайзер принимает в филд tags список id существующих тэгов (по умолчанию так и работает).

Тело запроса:

{
  "title": "Why?",
  "content": "...",
  "tags": [
    "5f708f83f79f03c216ad9bb6",
    "5f708f83f79f03c216ad9bc3",
    "5f708f83f79f03c216ad9bf1"
  ]
}
  1. При чтении сериалайзер возвращает список 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

Благодарю вас.


Ответы (0 шт):