0

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

Sunderam Dubey
  • 1
  • 11
  • 20
  • 40
Satyajit Barik
  • 145
  • 1
  • 1
  • 8

0 Answers0