django F表达式、Q表达式、annotate、order_by

本文详细介绍了Django ORM中如何使用order_by方法对查询结果进行排序,包括按单字段、多字段排序,以及如何实现升序和降序排列。通过具体示例,展示了如何结合不同字段进行复合排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 如下模型:

class Book(models.Model):
    name = models.CharField(max_length=100)
    pages = models.IntegerField()
    price = models.FloatField()
    author = models.ForeignKey('Author',on_delete=CASCADE)
    class Meta:
        db_table='book'
class Author(models.Model):
    author=models.CharField(max_length=100)
    class Meta:
        db_table='author'

 

按书的价格排序(默认升序):books=Book.objects.order_by('price')

按书的价格倒序排序:books=Book.objects.order_by('-price')

按书的价格和页数升序排序:books=Book.objects.order_by('price','pages')

 

多个 order_by,后面会把前面的排序规则打乱,而使用后面的排序方式,比如下面这个,会根据作者的名字进行排序,而不是使用文章的创建时间排序

articles = Article.objects.order_by("create_time").order_by("author__name")

 

 

转载于:https://www.cnblogs.com/Forever77/p/10168685.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值