Django rest_framework : подсчет объектов и возврат значения в сериализатор
мне нужно подсчитать всех сторонников в модели и вернуть значение в сериализатор
models.py
class Supporters(models.Model):
name = models.CharField(max_length=255)
img = models.ImageField(upload_to="Supporters", blank=True, null=True)
serializers.py
class SupportersSerializer(serializers.ModelSerializer):
id = serializers.ReadOnlyField()
supporters_count = serializers.SerializerMethodField()
class Meta:
model = Supporters
fields = ("id", "name", "img", "supporters_count")
def get_supporters_count(self, obj):
return obj.supporters_count.count()
views.py
class SupportersViwe(generics.RetrieveAPIView): queryset = Supporters.objects.all()
def get(self, request, *args, **kwargs):
queryset = self.get_queryset()
serializer = SupportersSerializer(queryset, many=True)
return Response(serializer.data)
Что касается вашего файла сериализатора, остерегайтесь отступов, вот пример. Что касается подсчета объектов, я полагаю, вы ищете что-то вроде этого:
class SupportersSerializer(serializers.ModelSerializer):
id = serializers.ReadOnlyField()
supporters_count = serializers.SerializerMethodField()
class Meta:
model = Supporters
fields = ("id", "name", "img", "supporters_count")
def get_supporters_count(self, obj):
return Supporters.objects.count()
Как указано в документации queryset. С версии Django 4.1 можно также использовать асинхронную версию:
Asynchronous version: acount()