Python 跨四个模型查询集

Python 跨四个模型查询集,python,django,django-queryset,Python,Django,Django Queryset,在一个数据库中使用四种模型,我想计算一门课程的员工总数 此工作代码当前计算: 课程名称,即课程01、课程02 独特课程的数量,即2门课程 每门课程的实例数,即课程01=3,课程02=1,总课程数=4 models.py 我想返回每个唯一课程组的考生总数,即Course01=24名考生 到目前为止我所拥有的 views.py between_dates.html 假设“按课程组”是指给定日期的课程详细信息-实例,并且您希望按课程名称和日期查询该课程: course_details = Course

在一个数据库中使用四种模型,我想计算一门课程的员工总数

此工作代码当前计算:

课程名称,即课程01、课程02 独特课程的数量,即2门课程 每门课程的实例数,即课程01=3,课程02=1,总课程数=4 models.py

我想返回每个唯一课程组的考生总数,即Course01=24名考生

到目前为止我所拥有的

views.py

between_dates.html


假设“按课程组”是指给定日期的课程详细信息-实例,并且您希望按课程名称和日期查询该课程:

course_details = CourseDetail.objects.get(course__name='Django 101', date='2013-03-01')
cc_attendance = CourseDetailAttendance.objects.filter(course_details=course_details).count()
如果你想让某个课程的学员参加,无论他们何时参加,都可以跑步

course_details = CourseDetail.objects.filter(course__name='Django 101')
cc_attendance = CourseDetailAttendance.objects.filter(course_details__in=course_details).count()
要获取特定时间范围内的参与者人数,请执行以下操作:

course_details = CourseDetail.objects.filter(course__name='Django 101', date__range=[start_date, end_date])
cc_attendance = CourseDetailAttendance.objects.filter(course_details__in=course_details).count()
顺便问一句,是否有可能在同一天拥有给定课程的多个实例,例如Django 101?如果不是,我建议您使组合独特:

class CourseDetail(models.Model):
    course      = models.ForeignKey(Course)
    date        = models.DateField(blank=True, null=True)
    renew_date  = models.DateField(blank=True, null=True, default=None)
    attendance  = models.ManyToManyField(Employee, through='CourseDetailAttendance')

    class Meta:
        unique_together = ('course', 'date')

谢谢你,斯考尔。在模板中,我使用此代码显示课程名称和所述课程的实例。{%forcs-in-courses\u-grouped%}{{cs.courses\uuuu-name}{{{cs.courses\uuuu-count}}您是否可以使用此循环获取工作代码?我一直在玩PythonShell,但我无法创建解决方案。您到底想做什么?有什么问题吗?从我的数据库中,我当前的代码返回了一个列表,其中包含特定月份的唯一课程名称15和课程数27。我无法得到的是在15门课程中每门课程中接受培训的人数。您的代码对命名课程非常有效,但我无法使其对课程组集有效。你们怎么看?若你们所说的课程组是指课程模型的实例,那个么我的第二个例子不正是你们所需要的吗?如果没有,请用模型名称解释,你所说的课程组到底是什么意思。比如说,一门课程是Django 101。Django 101有3个实例。假设Django 101_A周一和5名球员,Django 101_B周二和5名球员,Django 101_C周三和5名球员。因此,您将拥有唯一的课程名称Django 101=1、课程实例Django 101=3和训练有素的学员Django 101=15。这有意义吗?我无法理解如何通过Coursedeail.objects.filterdate\uuuu range=开始日期、结束日期访问Coursedeail\u考勤
course_details = CourseDetail.objects.filter(course__name='Django 101')
cc_attendance = CourseDetailAttendance.objects.filter(course_details__in=course_details).count()
course_details = CourseDetail.objects.filter(course__name='Django 101', date__range=[start_date, end_date])
cc_attendance = CourseDetailAttendance.objects.filter(course_details__in=course_details).count()
class CourseDetail(models.Model):
    course      = models.ForeignKey(Course)
    date        = models.DateField(blank=True, null=True)
    renew_date  = models.DateField(blank=True, null=True, default=None)
    attendance  = models.ManyToManyField(Employee, through='CourseDetailAttendance')

    class Meta:
        unique_together = ('course', 'date')