微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我的注释 group by 没有按预期工作?

如何解决为什么我的注释 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.idusers_obby_info.status 分组在一起。我想要的只是users_obby_infostatus

下面是两个表格(为了简单起见,我省略了一些字段):

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 举报,一经查实,本站将立刻删除。