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

Posted

技术标签:

【中文标题】如何计算Django中一个对象的多个字段的值?【英文标题】:How to count values of many field for one object in Django? 【发布时间】:2020-12-12 18:45:18 【问题描述】:

实际上我被一件事困住了。我学到了很多东西,但我需要你的帮助......

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')

首先 - 我想获得分配给一个对象的平均费率值。 其次,我想计算每个对象有多少个速率。

【问题讨论】:

【参考方案1】:

简单,试试这样:

from django.db.models import Avg, Count

Car.objects.annotate(rate_count=Count('rates'), avg_rate=Avg('rates__grade')).values()

更多信息请访问documentation

【讨论】:

【参考方案2】:

我不是 Django 方面的专家,但是在查看了模型之后,我希望以下类似的东西可以工作

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

【讨论】:

以上是关于如何计算Django中一个对象的多个字段的值?的主要内容,如果未能解决你的问题,请参考以下文章

Django:如何在同一对象中提到的时间自动更改字段的值?

Django Admin Cookbook-8如何在Django admin中优化查询

CoreData如何实现托管对象的“计算”属性字段

如何设置包含枚举的对象的多个参数的值?

如何在水晶报表中计算字段?

如何将计算字段添加到 Django 模型