【发布时间】:2022-01-21 05:58:18
【问题描述】:
我正在尝试对我的一些 Django 列进行一些聚合,但我遇到了一个我无法弄清楚的错误。这是我的模型(反正相关的东西):
class Fillup(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE)
date = models.DateField(default=date.today)
trip_distance = models.FloatField(validators=[MinValueValidator(0.0)])
car = models.ForeignKey('Car',on_delete=models.CASCADE, related_name='fillups')
class Car(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE)
name = models.CharField(max_length=25)
因此,每个 Fillup 对象本质上都是汽车中的一罐油,而我想要做的是获取每辆汽车的 trip_distance 列的总数。我从其他各种 StackOverFlow 页面尝试了几件事,但似乎没有任何效果。
我的第一次尝试是将此字段添加到汽车模型:
@property
def distance_driven(self):
return self.fillups.aggregate(sum('trip__distance'))
但我只是收到以下错误:
TypeError: unsupported operand type(s) for +: 'int' and 'str'
我也尝试将它添加到我的序列化程序中,但得到了同样的错误:
distance_driven = serializers.SerializerMethodField()
def get_distance_driven(self, ob):
return ob.fillups.all().aggregate(sum('trip_distance'))['trip__distance']
这里有什么我遗漏的吗?我不明白为什么在尝试对 FloatField 列求和时出现该错误。
任何帮助将不胜感激!
【问题讨论】:
标签: django django-models django-rest-framework