在一个端点django rest框架中使用两个不同的序列化器

时间:2019-03-13 17:49:25

标签: python django django-rest-framework django-serializer

我正在尝试在端点中使用两个不同的序列化器,但是我分配的第二个序列化器(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 个答案:

答案 0 :(得分:6)

在一个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)