2
我想在MyUser表上执行group by子句,其中的CNT.Status正好是一个原始查询,如下所示。Django复杂的查询从groupby中获取数据并且有子句
SELECT user_id from user_table GROUP BY user_id HAVING COUNT(status)=1
我尝试过使用Django模型API的各种选项,但它在group by子句中也添加了“id”。
我想在MyUser表上执行group by子句,其中的CNT.Status正好是一个原始查询,如下所示。Django复杂的查询从groupby中获取数据并且有子句
SELECT user_id from user_table GROUP BY user_id HAVING COUNT(status)=1
我尝试过使用Django模型API的各种选项,但它在group by子句中也添加了“id”。
好像你正在寻找filtering on annotations:
qs = (MyUser
.objects
.annotate(num_status=Count('status'))
.filter(num_status__gt=1)
)
注意:我supose该状态是1:N的相关模型。
不是这个缺少'.values('user_id')'。只是好奇。 – Shubham 2015-05-08 15:30:33
@Shubham是的,'.values_list('user_id',flat = True)'更精确。谢谢。 – danihp 2015-05-08 15:34:59