Django复杂查询从groupby和having子句获取数据

sha*_*pan 2 django group-by annotate django-queryset

我想在具有CNT.Status的MyUser表上执行group by子句,原始查询将如下所示.

SELECT user_id from user_table GROUP BY user_id HAVING COUNT(status)=1
Run Code Online (Sandbox Code Playgroud)

我尝试使用Django模型API的各种选项,但它也在group by子句中添加"id".

dan*_*era 5

看来你正在寻找过滤注释:

qs = ( MyUser
      .objects
      .annotate(num_status=Count('status'))
      .filter(num_status__gt=1)
     )
Run Code Online (Sandbox Code Playgroud)

注意:我认为状态是1:N相关模型.