order_by()
是Django中的一个查询API函数,用于对查询结果进行排序。其作用是根据指定条件对查询结果进行排序,可以按照一个或多个字段进行排序,支持升序和降序。
order_by()
的基本语法为:Model.objects.order_by(field1[, field2,...])
,其中Model
为要进行查询的Model,field1[, field2,...]
为要排序的字段。
下面通过两个实例来进一步说明:
实例一
我们有一个Article
模型,它包含了文章的标题、发布日期和访问量等信息,我们想要按照访问量从大到小对文章进行排序:
from myapp.models import Article
articles = Article.objects.order_by('-views')
在以上代码中,我们使用了-views
来表示按照访问量倒序排序,即从大到小排列。
实例二
我们有一个Book
模型,它包含了书名、作者、出版日期和价格等信息,我们要按照出版日期先后顺序对书籍进行排序,并且如果出版日期相同,再按照价格从低到高排序:
from myapp.models import Book
books = Book.objects.order_by('publish_date', 'price')
在以上代码中,我们使用了publish_date
和price
两个字段来进行排序。首先按照出版日期从早到晚排序,如果出版日期相同,再按照价格从低到高排序。
除了以上示例,order_by()
还支持对日期、时间、字符类型等字段进行排序,并且支持链式调用。需要注意的是,在使用order_by()
函数时,总是会返回一个全新的QuerySet对象,所以如果需要对排序后的结果进行进一步操作,需要保存新的QuerySet对象或链式调用API函数。