Python 用于计算特定出勤率的Django查询表达式

Python 用于计算特定出勤率的Django查询表达式,python,django,django-models,query-expressions,Python,Django,Django Models,Query Expressions,我有一个有1000行的字段。在这些行中有两个可用状态。在场和缺席。我想知道是否有一个查询表达式来计算出席人数字段中出席或缺席的学生总数,以便我可以将答案存储在相应的字段中(出席人数字段已填充“出席”和“缺席”) 我用这些命令工作,但这些不是我真正想要的。如果对此有表达式查询,请让我知道 present_count = StudentInClass.objects.filter(Attendance__contains='Present').count absent_count = Studen

我有一个有1000行的字段。在这些行中有两个可用状态。在场和缺席。我想知道是否有一个查询表达式来计算出席人数字段中出席或缺席的学生总数,以便我可以将答案存储在相应的字段中(出席人数字段已填充“出席”和“缺席”)

我用这些命令工作,但这些不是我真正想要的。如果对此有表达式查询,请让我知道

present_count = StudentInClass.objects.filter(Attendance__contains='Present').count 
absent_count = StudentInClass.objects.filter(Attendance__contains='Absent').count

您正在寻找筛选方法。我也会选择BooleanField而不是IntegerField。然后过滤并计数

class StudentInClass(models.Model):
    attendance = models.CharField(max_length=20, default='None')
    total_present = models.BooleanField(default=False)
    total_absent = models.BooleanField(default=False,null=True)

student_count = StudentIntClass.objects.filter(total_present==True).count()

与此类似。

您正在寻找筛选方法。我也会选择BooleanField而不是IntegerField。然后过滤并计数

class StudentInClass(models.Model):
    attendance = models.CharField(max_length=20, default='None')
    total_present = models.BooleanField(default=False)
    total_absent = models.BooleanField(default=False,null=True)

student_count = StudentIntClass.objects.filter(total_present==True).count()

类似于此。

类似于以下的功能应该可以工作(未测试)


类似下面的东西应该可以工作(未经测试)


我用这些命令工作,但这些不是我真正想要的。如果对此有表达式查询,请让我知道

present_count = StudentInClass.objects.filter(Attendance__contains='Present').count 
absent_count = StudentInClass.objects.filter(Attendance__contains='Absent').count
出席人数=StudentInClass.objects.filter(出席人数包含class='present').count
缺席\u count=StudentInClass.objects.filter(考勤\u包含class='缺席').count

我可以使用这些命令,但这些不是我真正想要的。如果对此有表达式查询,请让我知道

present_count = StudentInClass.objects.filter(Attendance__contains='Present').count 
absent_count = StudentInClass.objects.filter(Attendance__contains='Absent').count
出席人数=StudentInClass.objects.filter(出席人数包含class='present').count
缺席人数=StudentInClass.objects.filter(出勤人数包含“缺席”).count

可能您可以使用简单的
分组方式

from django.db.models import Count

StudentInClass.objects.values('Attendance').annotate(count=Count('Attendance'))

可能您可以使用简单的
分组方式

from django.db.models import Count

StudentInClass.objects.values('Attendance').annotate(count=Count('Attendance'))

看一下文档的部分。看一下文档的部分。我对字段类型没有发言权,因为我正在处理csv提供的数据,否则是布尔值将是理想的选择。我对字段类型没有发言权,因为我正在处理csv提供的数据,如果不是这样的话,布尔运算就是理想的选择。嘿,我想你想错了。我只是编辑我的问题。请重读一遍。嘿,我想你想错了。我只是编辑我的问题。请重读。