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,那么它将导致大量的查询来更新每个地方的名字。更糟糕的是,如果你在讲师的帮助下添加一个额外的模型,你将不得不查看所有以某种方式创建/编辑/更新指令的视图或者看看如何解决这个问题。因此,它最终也会导致大量的实现工作。