关于django中的annotate使用

当在建立模型的时候

ordering = [‘username’]

在使用values和annotate的时候,values在annotate前面相当于分组

group by后面会增加username排序字段 。

users = User.objects.values(‘type’).annotate(Count(‘num’))

SELECT user.type, COUNT(user.num) AS num__count FROM user GROUP BY user.type, user.username

加order_by()去掉排序后,恢复正常,变成

SELECT user.type, COUNT(user.num) AS num__count FROM user GROUP BY user.type

当如果 ordering = [‘id’] 直接会导致分组失效,这里需要注意 ordering 对 annotate 的影响, 是个小坑

原文链接: 关于django中的annotate使用 版权所有,转载时请注明出处,违者必究。
注明出处格式:流沙团 ( https://www.gyarmy.com/post-783.html )

发表评论

0则评论给“关于django中的annotate使用”