导读:今天首席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如何查询结果排序的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。