python - Django中如何获取某个字段的总和

标签 python django

如何呈现特定字段值的总计?正如您所看到的,我在这里使用反向关系,因为我有一个外键(我不确定这是否有影响)。例如,如果我想要 'ab' 字段中的值的总数,我该怎么办?我知道我必须使用聚合或注释方法。在我的特殊情况下会是什么样子?

models.py

class Batting(models.Model):
    id = models.IntegerField(db_column='ID', primary_key=True)
    playerid = models.ForeignKey('PlayerLkup', models.DO_NOTHING, db_column='playerID', blank=True, null=True)
    g = models.IntegerField(db_column='G', blank=True, null=True
    ab = models.IntegerField(db_column='AB', blank=True, null=True)
    year = models.IntegerField(db_column='Year', blank=True, null=True) 
    complete_name = models.CharField(max_length=50, blank=True, null=True)

class PlayerLkup(models.Model):
    playerid = models.CharField(db_column='playerID', primary_key=True, max_length=255)
    birthday = models.IntegerField(db_column='birthDay', blank=True, null=True)
    namefirst = models.CharField(db_column='nameFirst', max_length=255, blank=True, null=True)
    namelast = models.CharField(db_column='nameLast', max_length=255, blank=True, null=True)

views.py

from django.shortcuts import render
from .models import PlayerLkup


def player_info(request, playerid):
    playerdata = PlayerLkup.objects.get(playerid=playerid)
    battingstats = playerdata.batting_set.all()
    return render(request, 'careerstats/playerpage.html', {'playerdata': playerdata, 'battingstats': battingstats})

最佳答案

您可以尝试通过以下方式聚合

from django.db.models import Sum
result = Batting.objects.aggregate(sum_of_ab=Sum("ab"))
print result["sum_of_ab"]

要获取与特定玩家关联的所有 ab 字段的总和,您可以修改查询以首先进行过滤

from django.db.models import Sum

playerdata = PlayerLkup.objects.get(playerid=playerid)
result = Batting.objects.filter(playerid=playerdata).aggregate(sum_of_ab=Sum("ab"))
print result["sum_of_ab"]

关于python - Django中如何获取某个字段的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56046688/

相关文章:

python - Plotly:绘制列时如何手动更改图例项?

python - 如何从 Django 中的 ftp 下载保存到 ImageField

django - 根据外键将 django formset 分组

python - django-rest-auth 注册/验证电子邮件/不工作

python - 未经授权的客户端 : Grant type 'authorization_code' not allowed for the client. Django -auth0 -login

python - 将 python IDLE 更新到 3.5

python - PIL Image 从 numpy 数组构造奇怪的图像 - 为什么?

python - subprocess.check_output() 没有输出

python - Apache Ignite - 简单的 Python 示例

django - 如何处理 Django REST 和 React.js 关系的 CSRFToken 真实性?