首页>>后端>>Python->django如何查询结果排序(2023年最新解答)

django如何查询结果排序(2023年最新解答)

时间:2023-12-07 本站 点击:0

导读:今天首席CTO笔记来给各位分享关于django如何查询结果排序的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

django排序怎么将字符型字段按整型排序

搞这个问题搞了很久,终于自己给弄出来啦,虽然这个提问时间过了这么久了,不过以后说不定也会有人遇到同样的问题,一搜就搜到这里了,所以还是把自己的方法附上

本人用MySQL数据库,chart表中有个time字段,字符型,想让查询结果按照time字段的整型排序

list=Chart.objects.extra(select={'t':'time+0'})

list=list.extra(order_by=["t"])

相当于sql语句

SELECT *,time+0 AS t FROM chart ORDER BY t

问题完美解决

请问django如何将字符型字段按数值型排序,如‘12,123,1111,133’,排序后结果为12,123,133,1111,在线等

在template里无法排序。需要在view里做。

办法是这样。

tmps='12,123,1111,133'

tmps=",".join([str(c) for c in [int(c) for c in tmps.split(",")].sort()])

分开写是这样

tmps='12,123,1111,133'

str_list=tmps.split(",")

int_list=[int(c) for c in str_list]

int_list.sort()

str_list2=['%s'%c for c in int_list]

output_str=",".joint(str_list2)

Django中复杂的查询

在上面所有的例子中,我们构造的过滤器都只是将字段值与某个常量做比较。如果我们要对两个字段的值做比较,那该怎么做呢?

Django 提供 F() 来做这样的比较。F() 的实例可以在查询中引用字段,来比较同一个 model 实例中两个不同字段的值。

Django 支持 F() 对象之间以及 F() 对象和常数之间的加减乘除和取模的操作。

filter() 等方法中的关键字参数查询都是一起进行“AND” 的。 如果你需要执行更复杂的查询(例如OR 语句),你可以使用Q 对象。

from django.db.models import Q

Q(title__startswith='Py')

Q 对象可以使用 和| 操作符组合起来。当一个操作符在两个Q 对象上使用时,它产生一个新的Q 对象。

查询名字叫水浒传或者价格大于100的书

你可以组合 和| 操作符以及使用括号进行分组来编写任意复杂的Q 对象。同时,Q 对象可以使用~ 操作符取反,这允许组合正常的查询和取反(NOT) 查询:

查询函数可以混合使用Q 对象和关键字参数。所有提供给查询函数的参数(关键字参数或Q 对象)都将"AND”在一起。但是,如果出现Q 对象,它必须位于所有关键字参数的前面。例如:

查询名字叫水浒传与价格大于100的书

结语:以上就是首席CTO笔记为大家介绍的关于django如何查询结果排序的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Python/18603.html