gpt4 book ai didi

mysql - 我如何计算 django 中这些条目的平均分数?

转载 作者:行者123 更新时间:2023-11-29 03:00:35 25 4
gpt4 key购买 nike

所以我有这个模型:

class scoreShow(models.Model):
dancer = models.ForeignKey(dancer)
s1 = models.IntegerField(max_length = 2)
s2 = models.IntegerField(max_length = 2)
s3 = models.IntegerField(max_length = 2)
s4 = models.IntegerField(max_length = 2)
s5 = models.IntegerField(max_length = 2)
s6 = models.IntegerField(max_length = 2)
s7 = models.IntegerField(max_length = 2)
counter = models.IntegerField(max_length = 2)
stotal = models.IntegerField(max_length = 3)
field_1 = models.IntegerField(max_length = 20, null=True, blank=True)
field_2 = models.CharField(max_length = 20, null=True, blank=True)

def __unicode__(self):
return str(self.dancer)

从这个 View 表单中获取的信息:

def scores(request):
perf = dancer.objects.filter(perform=True)

if request.method =='POST':
intpk = request.POST.get("form")
whendone = request.POST.get("done")

contestant =dancer.objects.get(pk=intpk)

showcase = inlineformset_factory(dancer, scoreShow, extra = 1)
form = showcase(instance=None)

if whendone == "save":

form = showcase(request.POST, request.FILES, instance=contestant)
if form.is_valid():
form.save()

return render_to_response("scores.html",locals(), context_instance = RequestContext(request))

它接受大约 13 个人的 1 到 10 的数值。我需要计算 13 个人得分的平均值。2 个平均值:

  1. 前 7 个类别的平均值。 s1 的平均值,s2 的平均值 &

  2. 将所有 S 加在一起的平均值,即 s1 总数 + s2 总数的平均值...除以条目总数。

如果可能的话,我还想避免让任何人两次提交乐谱。谁能帮我解决这个问题?

最佳答案

  1. 您可以使用 Aggregation feature通过调用:

    from django.db.models import Avg
    qs = ScoreShow.objects.all()
    return qs.aggregate(Avg('s1'), Avg('s2'), Avg('s3'), Avg('s4'), Avg('s5'), Avg('s6'),Avg('s7'))

    或更短一点:

    qs = ScoreShow.objects.all()
    return qs.aggregate(*[Avg('s%d' % i) for i in range(1, 8)])
  2. 要一起计算所有分数的平均值,您需要将聚合与 annotate 结合使用:

    from django.db.models import Avg, Sum
    fields = ['s%d' % i for i in range(1,8)]
    qs = ScoreShow.objects.annotate(sAll=Sum('id', field='+'.join(fields))).all()
    return qs.aggregate(Avg('sAll'))
  3. 为确保没有人提交两个分数,将 unique=True 添加到 dancer 外键:

    class ScoreShow(models.Model):
    dancer = models.ForeignKey(dancer, unique=True)

关于mysql - 我如何计算 django 中这些条目的平均分数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24296749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com