Django complex query to fetch data from groupby an

2019-07-21 21:38发布

问题:

I want to execute group by clause on MyUser table having CNT.Status exactly one the raw query would be like below.

SELECT user_id from user_table GROUP BY user_id HAVING COUNT(status)=1

I tried various options using Django model API but its adding "id" too in group by clause.

回答1:

It seems you are looking for filtering on annotations:

qs = ( MyUser
      .objects
      .annotate(num_status=Count('status'))
      .filter(num_status__gt=1)
     )

Notice: I supose that status is a 1:N related model.