Прямое присвоение прямой стороне множества "многие ко многим" запрещено. Вместо этого используйте 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()
.
Пожалуйста, не стесняйтесь спрашивать меня о чем угодно. Любая помощь, пожалуйста, будет очень признательна.