在djang中优雅地显示每个用户的总和

2024-04-26 10:56:05 发布

您现在位置:Python中文网/ 问答频道 /正文

试图显示每个学生的最终分数。但它不只是显示sum的结果,而是显示一个查询集块:例如:

Annie <QuerySet [{'studName': None, 'attendance__sum': 3}, {'studName': 1, 'attendance__sum': 2}, {'studName': 2, 'attendance__sum': 1}]>

其他学生也是如此。你知道吗

我想把它显示为:

安妮2

本尼3

查理4号

我的观点:

def attStudName(request):
    studentName = MarkAtt.objects.all()
    mark = MarkAtt.objects.values('studName').annotate(Sum('attendance'))
    context = {
        'studentName' : studentName,
        'mark' : mark

    }
    return render(request,'show-name.html',context)

我的模板:

{% for y in mark %}

{% for x in studentName %}  

 <p>{{x.studName}}</p> <p> {{mark}}</p>

 {% endfor %}
{% endfor %}  

我如何显示每个学生的名字与他们自己的标记相应?我怎样才能在没有标记的情况下显示标记呢

编辑时间:

你知道吗型号.py地址:

class Namelist(models.Model): 
    name = models.CharField(max_length=100)
    program = models.CharField(max_length=10)
    year = models.IntegerField(default=1)
    studType = models.CharField(max_length=15)
    courseType = models.CharField(max_length=15)
    nationality = models.CharField(max_length=20)
    VMSAcc = models.CharField(max_length=30)
    classGrp = models.ForeignKey('GroupInfo', on_delete=models.SET_NULL, null=True)


class MarkAtt(models.Model):
    studName = models.ForeignKey(Namelist,on_delete=models.SET_NULL,blank=True, null=True, default=None)
    classGrp = models.ForeignKey(GroupInfo, on_delete=models.SET_NULL, null=True)
    currentDate = models.DateField(default=now())
    week = models.IntegerField(default=1)
    attendance = models.IntegerField(default=100) #1 is present

先谢谢你。你知道吗


Tags: 标记truedefaultmodelslength学生maxmark
2条回答

你把事情搞得太复杂了。鉴于以下简单背景:

students = MarkAtt.objects.values('studName').annotate(mark=Sum('attendance'))
context = {
    'students' : students,
}

您可以在模板中执行以下操作:

{% for student in students %}  
    <p>{{student.studName}}</p> <p> {{ student.mark}}</p>
{% endfor %}

下面应该返回一个带有学生姓名和分数的查询集。不需要两个单独的查询。你知道吗

students = MarkAtt.objects.values('studName').annotate(mark=Sum('attendance'))

如果studName是外键,请执行此操作.values('studName__name')

然后在您的上下文中,您可以添加:

context = {
    students = students
}

然后可以在模板中循环students,并将数据显示为:

<p>{{x.studName}}</p> <p> {{x.mark}}</p>

相关问题 更多 >