Как я могу вернуть созданные данные при успешном создании в Django - PullRequest
0 голосов
/ 30 мая 2018

В моем проекте Django у меня есть APIView:

class PhysicalServerManualGenerateOrderAPIView(CreateAPIView):
    serializer_class = PhysicalServerManualGenerateOrderSerialzier
    permission_classes = [IsFinanceAdmin, IsSuperAdmin]
    queryset = Order.objects.all() 

в PhysicalServerManualGenerateOrderSerialzier:

class PhysicalServerManualGenerateOrderSerialzier(ModelSerializer):
    ...
    def create(self, validated_data):

        try:
            order = getOrder(user=user, validated_data=validated_data) # there I create the order instance
        except Exception as e:
            order = None

        return order

Но у меня есть требование, я хочу вернуть созданный заказидентификатор (или другие данные), когда я получаю доступ к APIView.

1 Ответ

0 голосов
/ 30 мая 2018

Измените ваш API, как показано ниже,

from rest_framework.response import Response
from rest_framework import status


class PhysicalServerManualGenerateOrderAPIView(CreateAPIView):
    # your code
    def create(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        self.perform_create(serializer)

        sufficent_data = serializer.data  # you will get the serialized data here, which includes the "order_id" too

        headers = self.get_success_headers(serializer.data)
        return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)


Когда вы вызываете self.perform_create(serializer), вызывается метод create() класса PhysicalServerManualGenerateOrderSerialzier и возвращается Orderпример.serializer.data сериализует этот экземпляр и делает его доступным в классе API

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...