如何解决为什么我的注释 group by 没有按预期工作?
我想做一个像原始 sql select count(b.status) from a left out join b on a.id = b.user_id group_by(b.status)
这样的查询。我知道如何使用原始 sql 获得我想要的东西。但是当我尝试使用 orm 实现它时,它失败了。代码如下:
query_kwargs_dict = {'id__in': [10000,10001]}
statistics = UserAuthModel.objects.filter(**query_kwargs_dict).select_related(
'obbyuserinfomodel'
).values('obbyuserinfomodel__status').annotate(count=Count('obbyuserinfomodel__status')).query
print('statistics',statistics)
打印语句输出为:
statistics SELECT `users_obby_info`.`status`,COUNT(`users_obby_info`.`status`) AS `count` FROM `users_auth` LEFT OUTER JOIN `users_obby_info` ON (`users_auth`.`id` = `users_obby_info`.`user_id`) WHERE `users_auth`.`id` IN (10000,10001) GROUP BY `users_auth`.`id`,`users_obby_info`.`status` ORDER BY `users_auth`.`id` DESC
让我困惑的是 group_by
。它应按 values
中指定的字段分组。在我的例子中,它是 obbyuserinfomodel__status
,但输出 sql 语句显示它被 users_auth
.id
和 users_obby_info
.status
分组在一起。我想要的只是users_obby_info
。status
。
下面是两个表格(为了简单起见,我省略了一些字段):
class UserAuthModel(AbstractBaseUser):
...
class ObbyUserInfoModel(models.Model):
user = models.OnetoOneField(UserAuthModel,on_delete=models.CASCADE)
...
status = models.CharField(max_length=15,default=ACCOUNTSTATUS.UNACTIVATED.value,null=True)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。