簡體   English   中英

如何計算 Django 中的模型對象

[英]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()

記住使用count()len()更有效

像這樣使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM