Прямое присвоение прямой стороне множества "многие ко многим" запрещено. Вместо этого используйте categories.set()

Это моя модель

class Post(models.Model):
    title = models.CharField(max_length=100, blank=False, null=False)
    description = models.TextField(max_length=1000, blank=True, null=True)
    created_by = models.ForeignKey(User, on_delete=models.CASCADE, related_name='post_created_by')
    categories = models.ManyToManyField(to=Category, blank=True, related_name='categories')


Это мои сериализаторы

class CreatePostSerializer(ModelSerializer):
    categories = serializers.CharField(error_messages={'required': "categories can't be blank"})
    title = serializers.CharField(error_messages={'required': "title can't be blank"})
    description = serializers.CharField(error_messages={'required': "description can't be blank"})

    class Meta:
        model = Post
        fields= ['title','description','categories']

    def create(self,validated_data):
        title        = validated_data['title']
        description  = validated_data['description']
        categories = validated_data['categories']
        user = self.context['request'].user
        if (title and description):
            post_obj = Post.objects.create(
                title=title, description=description, 
                created_by=user, categories=categories) 
        return validated_data

Это мои взгляды

class CreatePostAPIView(APIView):
    permisssion_classes = (IsAuthenticated,)
    def post(self,request,*args,**kwargs):
        user = request.user
        data = request.data
        serializer =  CreatePostSerializer(data=data, context={'request': request})
        if serializer.is_valid():
            serializer.save()
            return Response({'success' :'True','message' : 'Post created successfully','data' : serializer.data},status=200)
        return Response(serializer.errors,status=400)

Когда я пытаюсь обратиться к конечной точке API, это дает мне следующую ошибку:

Прямое назначение на прямую сторону множества "многие-ко-многим" запрещено запрещено. Вместо этого используйте categories.set()

.

Пожалуйста, не стесняйтесь спрашивать меня о чем угодно. Любая помощь, пожалуйста, будет очень признательна.

Вернуться на верх