我有两个松散定义的模型,如下所示:
class InformationUnit(models.Model):
username = models.CharField(max_length=255)
project = models.ForeignKey('Project')
...
class Project(models.Model):
name = models.CharField(max_length=255)
现在,在视图中,我想注释所有InformationUnit
属于一个项目,所以我这样做:
p = Project.objects.all().annotate(Count('informationunit')
效果还不错。
此外,我想知道,在每个项目中,有多少不同的username
参加。
也就是说,计算有多少个不同的username
s 在那里InformationUnit
组成一个项目的 s。
我已经尝试过以下方法,但它只是计算数量InformationUnit
, 不管username
:
p = Project.objects.all().annotate(Count('informationunit__username')
注意username
不是一个对象,它是一个字符串。有没有一种干净的方法来做到这一点,或者我应该基于循环和意大利面条代码创建更复杂的代码:P
多谢!
Count
可以采取distinct
论证,就像这样:
p = Project.objects.all().annotate(Count('informationunit__username',
distinct=True))
这似乎没有记录,但您可以在 Count 的源代码中找到它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)