This is my model:
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')
This is my serializers:
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
When I try to hit the API endpoint then it gives me the following error:
Direct assignment to the forward side of a many-to-many set is prohibited. Use categories.set() instead