我正在嘗試用 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
uj5u.com熱心網友回復:
如果您在沒有任何過濾的情況下對每個等級進行分組,通過使用以下代碼,它將對每個組的計數進行分組并將其作為字典回傳
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()
uj5u.com熱心網友回復:
filter()然后你可以使用count():
first_grade_students = Student.objects.filter(grade__grade_name =1).count()
記住使用count()比使用更有效len()
uj5u.com熱心網友回復:
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)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/351585.html
