Django ORM:按类型1的相关操作的计数排序,但在类型2的相关操作的计数时排除> TYPE1

时间:2014-03-23 15:04:02

标签: python sql database django django-models

我们说我们有以下模型:

class Item(models.Model):
    pass


class Action(models.Model):
    item = models.ForeignKey(Item, related_name='actions')
    type = models.PositiveSmallIntegerField(default=1)

其中type = 1或2

我需要找到前3个项目大多数类型1的操作,但不再有类型2的操作而不是类型1。(count_of_action1> count_of_action2)

测试:

   #item : {type1: action_count, type2: action_count}
        1: {1: 5, 2: 2},
        2: {1: 4, 2: 2},
        3: {1: 3, 2: 2},
        4: {1: 3, 2: 1},
        5: {1: 6, 2: 7},

应该产生[1,2,3]而不是5。

由于操作和项目的数量非常大,因此查询必须非常高效。 底层数据库是MySQL。

有人知道如何使用Django ORM实现上述目标吗?

1 个答案:

答案 0 :(得分:-1)

您是否看过django关于聚合和注释的文档。