如何解决Django Rest Framework返回单个值
如果我有以下模型,我将如何返回数据库中的总里程数?如果我使用聚合函数,则它将起作用,但是它将迭代所有对象,并在这些对象旁边给出总数。
models.py
from django.db import models
class Rec(models.Model):
name = models.CharField(max_length=50)
miles = models.IntegerField()
serializers.py
class SummarySerializer(serializers.Serializer):
total_miles = serializers.SerializerMethodField()
def get_total_miles(self,obj):
return Rec.objects.filter(name=obj.name).aggregate(Sum('miles'))
views.py
class SummaryViewSet(viewsets.ModelViewSet):
serializer_class = SummarySerializer
queryset = Rec.objects.all()
当前输出
[{'total':1000,'total':1000,'total':1000.... etc}]
所需的输出(值的一个实例)
[{'total_miles': 1000}]
解决方法
Django聚合返回一个dict(),当您聚合数据时,应向其中添加一个密钥,然后吐出密钥
def get_total_miles(self,obj):
return Rec.objects.filter(name=obj.name).aggregate(sum_miles=Sum('miles'))['sum_miles']
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。