Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using two different serializer in one endpoint django rest framework

I'm trying to use two different serializers in endpoint but the second serializer that i assign(UserSerializer) is the one that is getting used. Is there a way to have one specific serializer being used for one specific model so that i can use userSerializer for creating a user and the CategorySerializer to create a category.

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)
like image 261
David Ramirez Avatar asked Oct 24 '25 09:10

David Ramirez


1 Answers

You can only have one serializer class in one API view. If want to use two serializers, you can just use it like this.

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)

Or if really want to have some method for second serializer too, you can do

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)
like image 68
Nafees Anwar Avatar answered Oct 25 '25 22:10

Nafees Anwar



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!