Использование двух разных сериализаторов в одной конечной точке django rest framework - PullRequest
3 голосов
/ 13 марта 2019

Я пытаюсь использовать два разных сериализатора в конечной точке, но второй сериализатор, который я назначаю (UserSerializer), - тот, который используется.Есть ли способ использовать один конкретный сериализатор для одной конкретной модели, чтобы я мог использовать userSerializer для создания пользователя и CategorySerializer для создания категории.

class UserSignup(generics.CreateAPIView):
    model = Category
    serializer_class = CategorySerializer 

    model = User
    serializer_class = UserSerializer
    def create(self, request):
        data = request.data
        category_serializer = self.get_serializer(data=request.data, many=True)
        user_serializer = self.get_serializer(data=request.data, many=True)

1 Ответ

6 голосов
/ 13 марта 2019

В одном представлении API может быть только один класс сериализатора.Если вы хотите использовать два сериализатора, вы можете просто использовать его следующим образом.

class UserSignup(generics.CreateAPIView):
    model = Category
    serializer_class = CategorySerializer 

    def create(self, request):
        data = request.data
        category_serializer = self.get_serializer(data=request.data, many=True)
        user_serializer = UserSerializer(data=request.data, many=True)

Или, если вы действительно хотите иметь какой-либо метод для второго сериализатора, вы можете сделать

class UserSignup(generics.CreateAPIView):
    model = Category
    serializer_class = CategorySerializer 

    def get_user_serializer(*args, **kwargs):
        # you can have some logic here...
        return UserSerializer(*args, **kwargs)


    def create(self, request):
        data = request.data
        category_serializer = self.get_serializer(data=request.data, many=True)
        user_serializer = self.get_user_serializer(data=request.data, many=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...