Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何根据Django中的两个字段对查询集进行排序?

如何根据Django中的两个字段对查询集进行排序?
EN

Stack Overflow用户
提问于 2019-05-30 19:04:42
回答 1查看 44关注 0票数 1

这是我的serilizer类:

代码语言:javascript
运行
AI代码解释
复制
class RankNewsChannelSerializers(serializers.ModelSerializer):
    class Meta:
        model = News_Channel
        fields = ('id', 'name','total_star', 'total_user')

这是我的观点:

代码语言:javascript
运行
AI代码解释
复制
class NewsChannelRankApi(ListAPIView):
    queryset = News_Channel.objects.order_by('-total_star').all()
    serializer_class = RankNewsChannelSerializers

我得到的响应是基于total_stars进行排序的,如下所示:

代码语言:javascript
运行
AI代码解释
复制
[
    {
        "id": 9,
        "name": "The Hindu",
        "total_star": 36,
        "total_user": 5
    },
    {
        "id": 1,
        "name": "NDTV",
        "total_star": 36,
        "total_user": 5
    },
    {
        "id": 10,
        "name": "Firstpost",
        "total_star": 35,
        "total_user": 6
    },
    {
        "id": 14,
        "name": "DD News",
        "total_star": 25,
        "total_user": 4
    }
]

但我需要按total_star/total_user对响应进行排序。就像这是我的无效方法,但它会让你大致了解我想要实现的目标。

代码语言:javascript
运行
AI代码解释
复制
class NewsChannelRankApi(ListAPIView):
    queryset = News_Channel.objects.order_by('-total_star/total_user').all()
    serializer_class = RankNewsChannelSerializers

如果有什么办法的话,请帮帮我?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-30 19:08:28

您可以添加一个具有所需值的字段,然后按该值排序。此外,您也不需要.all()

代码语言:javascript
运行
AI代码解释
复制
    queryset = News_Channel.objects \
         .annotate(stars_per_user=F('total_star')/F('total_user')) \
         .order_by('-stars_per_user')
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56384210

复制
相关文章
Django 数据查询中对字段进行排序
也可以使用两个字段进行排序,当 第一个字段值 相等时,再用 第二个 字段值 来排序
卓越笔记
2023/02/18
2.9K0
MySQL | 如何对查询结果集进行排序
数据操作语言:结果集排序 如果没有设置,查询语句不会对结果集进行排序。也就是说,如果想让结果集按照某种顺序排列,就必须使用 ORDER BY 子句。 SELECT ...... FROM ...... ORDER BY 列名 [ASC | DESC]; SELECT ename,sal FROM t_emp ORDER BY sal; SELECT empno,ename,sal,deptno FROM t_emp ORDER BY sal DESC; 排序关键字 ASC 代表升序(默认),DESC
Zkeq
2022/05/18
6.4K0
MySQL | 如何对查询结果集进行排序
Java 对查询出来的list,根据时间字段进行升序 或者 降序排序
目录 1 代码 1 代码 ArrayList<User> users = new ArrayList<User>(); 升序 Collections.sort(users , new Comparator<User>() { @Override public int compare(Userh1, Userh2) { return h1.getBeginTime().compareTo(h2.getBeginTime())
一写代码就开心
2022/09/30
2.4K0
如何根据函数返回的值对dart中的List进行排序
# 关于排序:如何根据函数返回的值对dart中的List进行排序 void main(){ List<POJO> pojo = [POJO(5), POJO(3),POJO(7),POJO(1)]; // fill list pojo..sort((a, b) => a.id.compareTo(b.id)); for(var i in pojo){ print(i.id); // prints list in sorted order i.e 1 3 5 7 } }
徐建国
2021/08/26
11.9K0
多个字段中如何按其中两个进行排序(二次排序)
多个字段中如何按其中两个进行排序(二次排序) 1 原理     二次排序就是首先按照第一字段排序,然后再对第一字段相同的行按照第二字段排序,注意不能破坏第一次排序的结果。     这里主要讲如何使用一个Mapreduce就可以实现二次排序。Hadoop有自带的SecondarySort程序,但这个程序只能对整数进行排序,所以我们需要对其进行改进,使其可以对任意字符串进行排序。下面会分别列出这两个程序的详解。        Hadoop自带的例子中定义的map和reduce如下,关键是它对输入输出类型的定
闵开慧
2018/04/02
4.9K0
mysql8.0+根据json字段(时间字段)进行组合排序
-- 根据面试管理timeDate日期降序、timeDate时间升序,创建时间升序  SELECT id,create_time, (CASE  WHEN JSON_VALID(interview.interviewer_json)             THEN             JSON_UNQUOTE(JSON_EXTRACT(interview.interviewer_json, CONCAT('$.','timeDate')))              ELSE            
botkenni
2022/03/24
3.4K0
mysql8.0+根据json字段(时间字段)进行组合排序
Mysql 如何实现对某个字段进行排序?
Mysql对单个字段执行排序使用的语句是order by 语句。 跟在order后面的关键字是asc或desc。 asc是升序 desc是降序
吃猫的鱼Code
2023/02/02
2.7K0
Python对字典根据键值分组进行排序
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/119530.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/11
4.6K0
Python中对list进行排序
很多时候,我们需要对List进行排序,Python提供了两个方法 对给定的List L进行排序, 方法1.用List的成员函数sort进行排序 方法2.用built-in函数sorted进行排序(从2.4开始) 这两种方法使用起来差不多,以第一种为例进行讲解: 从Python2.4开始,sort方法有了三个可选的参数,Python Library Reference里是这样描述的 cmp:cmp specifies a custom comparison function of two arguments (iterable elements) which should return a negative, zero or positive number depending on whether the first argument is considered smaller than, equal to, or larger than the second argument: "cmp=lambda x,y: cmp(x.lower(), y.lower())" key:key specifies a function of one argument that is used to extract a comparison key from each list element: "key=str.lower" reverse:reverse is a boolean value. If set to True, then the list elements are sorted as if each comparison were reversed.In general, the key and reverse conversion processes are much faster than specifying an equivalent cmp function. This is because cmp is called multiple times for each list element while key and reverse touch each element only once. 以下是sort的具体实例。 实例1: >>>L = [2,3,1,4] >>>L.sort() >>>L >>>[1,2,3,4] 实例2: >>>L = [2,3,1,4] >>>L.sort(reverse=True) >>>L >>>[4,3,2,1] 实例3: >>>L = [('b',2),('a',1),('c',3),('d',4)] >>>L.sort(cmp=lambda x,y:cmp(x[1],y[1])) >>>L >>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)] 实例4: >>>L = [('b',2),('a',1),('c',3),('d',4)] >>>L.sort(key=lambda x:x[1]) >>>L >>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)] 实例5: >>>L = [('b',2),('a',1),('c',3),('d',4)] >>>import operator >>>L.sort(key=operator.itemgetter(1)) >>>L >>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)] 实例6:(DSU方法:Decorate-Sort-Undercorate) >>>L = [('b',2),('a',1),('c',3),('d',4)] >>>A = [(x[1],i,x) for i,x in enumerate(L)] #i can confirm the stable sort >>>A.sort() >>>L = [s[2] for s in A] >>>L >>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)] 以上给出了6中对List排序的方法,其中实例3.4.5.6能起到对以List item中的某一项 为比较关键字进行排序. 效率比较: cmp < DSU < key 通过实验比较,方法3比方法6要慢,方法6比方法4要慢,方法4和方法5基本相当 多关键字比较排序: 实例7: >>>L = [('d',2),('a',4),('b',3),('c',2)] >>> L.sort(key=lambda x:x[1]) >>> L >>>[('d', 2), ('c', 2), ('b', 3), ('a', 4)] 我们看到,此时排序过的L是仅仅按照第二个关键字来排的,如果我们想用
py3study
2020/01/09
2.5K0
django 多字段可选查询
重点是使用字典传值查询。可以指定字段,且是字典为非必填。字段有值就查,没有值就不查该字段。
卓越笔记
2023/02/18
1.3K0
Django(76)isort工具对import导入进行排序
我们在开发项目时经常会进行导包有import *格式的,还有from * import *格式的,最后就会显示的很乱,那么有没有什么工具能对导包进行一键排序呢?答案是有的,使用isort工具
全栈程序员站长
2022/09/16
1.1K0
Django(76)isort工具对import导入进行排序
Django基础篇-查询字段
注意:filter(**kwargs)方法:根据参数提供的提取条件,获取一个过滤后的 QuerySet。
小团子
2019/07/18
1.8K0
Django基础篇-查询字段
Django ORM 查询表中某列字段值
方式一获取到的是一个QuerySet,内容是键值对构成的,键为表的列名,值为对应的每个值。
BigYoung小站
2020/05/04
3.8K0
[MongoDB] 使用PHP根据_id字段查询数据
mongo中的_id是一个objectid对象类型,不管是查询时作为条件,还是列表时展示内容,都需要进行一下抓换
唯一Chat
2020/03/19
3.4K0
Django 2.1.7 查询集 QuerySet
上一篇Django 2.1.7 模型 - 条件查询 F对象 Q对象 聚合查询讲述了关于Django模型的介绍F对象、Q对象、聚合查询等功能。
Devops海洋的渔夫
2019/06/15
1.2K0
使用 Python 对波形中的数组进行排序
假设我们采用了一个未排序的输入数组。我们现在将对波形中的输入数组进行排序。数组 'arr[0..n-1]' 以波形排序,如果 arr[0] >= arr[1] <= arr[2] >= arr[3] <= arr[4] >= .....
很酷的站长
2023/02/22
7.1K0
使用 Python 对波形中的数组进行排序
java小技能:对list集合根据条件进行分组、过滤和字段筛选
需求:修改代理商角色权限时,判断是否存在权限被移除,如果存在,则穿透删除所有下级代理商相对应的权限值。
公众号iOS逆向
2022/12/19
6.3K0
java小技能:对list集合根据条件进行分组、过滤和字段筛选
点击加载更多

相似问题

如何根据两个字段的总数对django查询集进行排序?

11

Django -如何根据字段中的字符数对查询集进行排序

40

Django:根据注释字段的总和对查询集进行排序?

23

根据选择字段中的值对Django查询集进行排序

26

Django如何根据过滤的多对多字段对查询集进行排序?

16
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档