V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Phishion
V2EX  ›  Django

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

  •  
  •   Phishion · 2021-02-12 20:35:53 +08:00 · 1377 次点击
    这是一个创建于 1140 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    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 而不是字典?

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

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1425 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 17:27 · PVG 01:27 · LAX 10:27 · JFK 13:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.