如何在Django中为一个对象计算多个字段的值



实际上我有一件事。我学到了很多,但我需要你的帮助。。。

Django模型

from django.db import models
# Create your models here.
class Car(models.Model):
mark = models.CharField(max_length=180)
model = models.CharField(max_length=180, unique=True)
def __str__(self):
return "Car mark : {} Car model {}".format(self.id,self.model)

class Rate(models.Model):
class Ratings(models.IntegerChoices):
One = 1 
Two = 2
Three = 3
Four = 4
Five = 5

grade = models.IntegerField(choices=Ratings.choices)
car = models.ForeignKey(Car, on_delete=models.CASCADE,blank=True, null=True, related_name='rates')

首先,我想得到分配给一个对象的速率的平均值。第二,我想数一下每个物体有多少个速率。

简单,尝试如下:

from django.db.models import Avg, Count
Car.objects.annotate(rate_count=Count('rates'), avg_rate=Avg('rates__grade')).values()

更多信息可在文档中找到

我不是Django的专家,但看过这些模型后,我希望以下内容能在中发挥作用

number_of_rates = len(car.rates)
average = sum([rate.grade for rate in car.rates]) / len(car.rates)

最新更新