Как вернуть пользовательский словарь в качестве ответа для метода «create» в django rest framework? - PullRequest
0 голосов
/ 29 апреля 2019

Я использую django rest framework для моего текущего проекта. Я использую вложенный сериализатор.

class FirstSerializer(serializers.Serializer):
      field_one = serializers.CharField()
      field_two = serializers.CharField()

class SecondSerializer(serializers.Serializer):
      my_field = FirstSerializer(many=True)

      def create(self, validated_data):
          custom_dictionary = {}
          return custom_dictionary

Вот где я застрял. Я выполнял некоторые операции в SecondSerializer, теперь мне нужно вернуть пользовательский словарь без ключа «my_field» в ответе.

1 Ответ

0 голосов
/ 30 апреля 2019

Установите my_field как write_only=True и удалите метод create()

class SecondSerializer(serializers.Serializer):
    my_field = FirstSerializer(many=True, <b>write_only=True</b>) # change is here <<<<

    <strike>def create(self, validated_data):</strike>
        <strike>custom_dictionary = {}</strike>
        <strike>return custom_dictionary</strike>

Это обеспечит возможность использования поля при обновлении или создании экземпляра, , но не включается при сериализации представления.


Пример использования

from rest_framework.decorators import api_view
from rest_framework.response import Response


@api_view()
def foo_view(request):
    second_serializer = SecondSerializer(data=request.data)
    second_serializer.is_valid(True)
    return Response(second_serializer.data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...