Reputation: 392
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)
Upvotes: 4
Views: 4083
Reputation: 6608
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)
Upvotes: 7