Django 如何根据字段中相同数据出现频率排序?

2021-02-12 20:35:53 +08:00
 Phishion

我有一张表,比如下面这样的

class Person(models.Model):
    name = models.CharField(max_length=128)
    school = models.CharField(max_length=128)

我想制作一个查询,即统计 school 字段,出现最多数量的 school 排在前面,比如

a 是 学校 P

b 是 学校 K

c 是 学校 K

d 是 学校 L

e 是 学校 K

我想返回 b[K],c[K],e[K],a[P],d[L] 这样的排序

通过查阅资料,我找到了下面这样的方法

Person.objects.values('school').order_by('school__count').annotate(Count('school'))

它可以执行排序,但是有一点,它返回的是 dict 类型,我后续无法处理

如果我把 values 换成 all,school__count 属性就全部都是 1,(大部分资料里,这个字段填的都是外键)

请问,我如何构建查询语言,去拿到一个 Person object queryset 而不是字典?

最后,今天是大年初一,大家过年好,大伙儿要是有时间的话,请不吝赐教,多谢了。

1399 次点击
所在节点    Django
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/753087

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX