Python Django:应用distinct()方法后检索对象数

Python Django:应用distinct()方法后检索对象数,python,django,django-models,django-views,django-orm,Python,Django,Django Models,Django Views,Django Orm,我有一个课程模型,看起来像: class Course(models.Model): course_code = models.CharField(max_length=20) course_university = models.CharField(max_length=100) course_instructor = models.CharField(max_length=100) # lastname course_instructor_

我有一个课程模型,看起来像:

class Course(models.Model):
         
    course_code = models.CharField(max_length=20)
    course_university = models.CharField(max_length=100)
    course_instructor = models.CharField(max_length=100) # lastname
    course_instructor_fn = models.CharField(max_length=100) # firstname
    """
    More fields are here
    """
现在,我使用以下方法为每所大学选择了讲师:

 qs = Course.objects.filter(course_university__iexact=uni).order_by('course_instructor','course_instructor_fn','course_university').distinct('course_instructor','course_instructor_fn','course_university')
我的目的是现在使用聚合
count()
函数为每位讲师计算不同的
课程代码

因此,我试图基本上做到:

new\u qs=Course.objects.filter(id\u in=qs).注释(Course\u count=count('Course\u code',distinct=True).值列表('Course\u chestrator\fn','Course\u chestrator','Course\u count')

然而,目前,无论每个讲师有多少门课程,对于
user\u count
,我只得到1


我的目的是获得每个讲师提供的课程数量。我如何才能成功地做到这一点?

通常最好制作一个
讲师
模型,然后使用
外键
课程
讲师
。这也会使查询变得更容易。有没有其他方法可以实现这一点t设置新模型?@willemvanonTemplese不设置。当前的建模会导致更多的磁盘使用、较慢的查询、数据重复、许多保持数据同步的潜在问题等。一个简单的例子。如果您后来发现讲师的名字有误怎么办?然后您需要运行一个非常昂贵的查询来更新所有的
课程
都有记录。但更麻烦的是,如果你在其他模型上也有这样的
CharField
s,那么它将导致大量的查询来更新每个地方的名字。更糟糕的是,如果你在讲师的帮助下添加一个额外的模型,你将不得不查看所有以某种方式创建/编辑/更新指令的视图或者看看如何解决这个问题。因此,它最终也会导致大量的实现工作。