[英]How to count model objects in Django
我正在尝试用 Django 制作一个学生管理网站。 现在我想计算一个年级有多少学生并在我的网站上显示这个数字。 我怎样才能做到这一点? 我的型号:
from django.db import models
import uuid
from django.core.validators import MaxValueValidator,
MinValueValidator
# Create your models here.
class Student(models.Model):
name = models.CharField(max_length=150)
roll = models.UUIDField(default=uuid.uuid4, unique=True,
primary_key=True, editable=False)
father_name = models.CharField(max_length=150)
mother_name = models.CharField(max_length=150)
phone_number = models.IntegerField(validators=
[MaxValueValidator(99999999999)])
grade = models.ForeignKey('grade', on_delete=models.CASCADE )
def __str__(self):
return self.name
class Grade(models.Model):
grade_name = models.IntegerField(validators=
[MaxValueValidator(10), MinValueValidator(1)])
id = models.UUIDField(default=uuid.uuid4, unique=True,
primary_key=True, editable=False)
def __str__(self):
return self.grade
如果您在没有任何过滤的情况下对每个等级进行分组,通过使用以下代码,它将对每个组的计数进行分组并将其作为字典返回
from django.db.models import Count
Student.objects.all().order_by('id').values('grade__grade_name').annotate(count=Count('id', distinct=True))
如果要过滤成绩,以下代码将返回小学的学生人数
Student.objects.filter(grade__grade_name=elementary).count()
您可以使用filter()
然后count()
:
first_grade_students = Student.objects.filter(grade__grade_name =1).count()
像这样使用django.db.models Count
:
from django.db.models import Count
q = Grade.objects.annotate(nb_students=Count('student'))
要访问成绩中的学生人数,请执行以下操作:
for grade in q:
print(grade.nb_students)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.