How do I serialize ManyToMany Field data in Django?

Viewed 266

So I'm working on Django back-end and React front-end. I have a many-to-many field in one of my models, and trying to serialize.
I've googled some related issues and tried things out, but none worked. Let me show you my code first.
models.py

class Category(models.Model):
    objects = models.Manager
    category = models.CharField(max_length = 20)

class Content(models.Model):
    objects = models.Manager()
    title = models.CharField(max_length = 100, null=True)
    category = models.ManyToManyField(Category)

serializers.py

class ContentSerializer(serializers.ModelSerializer):
    category_name = serializers.SerializerMethodField()
    class Meta:
        model = Content
        fields = [
            'title', 'category_name'
            ]
    
    def get_category_name(self, obj):
        categories = self.context['book'].category.all()
        return categories

Finally, views.py

@api_view(['GET'])
def each_book(request, pk):
    this_book = Content.objects.get(pk=pk)
    serialized = ContentSerializer(
        this_book, 
        context={
            'request':request,
            'book' : this_book
            },
    )
    return Response(serialized.data)

I keep on getting error saying Object of type Category is not JSON serializable. What do you think is the problem? Thanks a lot in advance. :)

----
LATEST CODE
models.py

class Category(models.Model):
    category = models.CharField(max_length = 20)

class Content(models.Model):
    title = models.CharField(max_length = 100, null=True)
    category = models.ManyToManyField(Category)

serializers.py

class CategorySerializer(serializers.ModelSerializer):
    class Meta:
        model = Category
        fields = ['category']

class ContentSerializer(serializers.ModelSerializer):
    category_name = CategorySerializer(many=True)

    class Meta:
        model = Content
        fields = [
            'category_name'
            ]
0 Answers
Related