我们说我们有以下模型:
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实现上述目标吗?
答案 0 :(得分:-1)
您是否看过django关于聚合和注释的文档。