有关对象的多个注释

时间:2018-10-08 15:48:57

标签: python django django-orm

我正在尝试使用Django ORM为用户计算一些相关对象。

例如,我有3个模型:UserAB

class A(models.Model):
    creator = models.ForeignKey(
        'users.User', on_delete=models.CASCADE, related_name='A_set'
    )


class B(models.Model):
    creator = models.ForeignKey(
        'users.User', on_delete=models.CASCADE, related_name='B_set'
    )
    a_model = models.ForeignKey(
        'a.A', on_delete=models.CASCADE, related_name='B_set'
    )

我的查询如下:

User.objects.annotate(a_count=Count('a_set')).annotate(b_count=Count('b_set'))

b_count总是复制值a_count时,除非b对象的实数为0。但是当我将查询分为两个部分时-很好。

1 个答案:

答案 0 :(得分:1)

您应将Countdistinct=True参数一起使用:

User.objects.annotate(a_count=Count('a_set', distinct=True), b_count=Count('b_set', distinct=True))