i need to count all supporters in model and return value to serializer
models.py
JavaScript
x
4
1
class Supporters(models.Model):
2
name = models.CharField(max_length=255)
3
img = models.ImageField(upload_to="Supporters", blank=True, null=True)
4
serializers.py
JavaScript
1
11
11
1
class SupportersSerializer(serializers.ModelSerializer):
2
id = serializers.ReadOnlyField()
3
supporters_count = serializers.SerializerMethodField()
4
5
class Meta:
6
model = Supporters
7
fields = ("id", "name", "img", "supporters_count")
8
9
def get_supporters_count(self, obj):
10
return obj.supporters_count.count()
11
views.py
JavaScript
1
6
1
class SupportersViwe(generics.RetrieveAPIView): queryset = Supporters.objects.all()
2
def get(self, request, *args, **kwargs):
3
queryset = self.get_queryset()
4
serializer = SupportersSerializer(queryset, many=True)
5
return Response(serializer.data)
6
Advertisement
Answer
About your serializer file, beware of indentation, here is an example. As for counting objects, i believe you are looking for something like this:
JavaScript
1
11
11
1
class SupportersSerializer(serializers.ModelSerializer):
2
id = serializers.ReadOnlyField()
3
supporters_count = serializers.SerializerMethodField()
4
5
class Meta:
6
model = Supporters
7
fields = ("id", "name", "img", "supporters_count")
8
9
def get_supporters_count(self, obj):
10
return Supporters.objects.count()
11
As specified in the queryset documentation. It is also possible to use the asynchronous version since Django version 4.1:
JavaScript
1
2
1
Asynchronous version: acount()
2