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

 如下模型:

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")

 

 

posted @ 2018-12-24 15:08  Forever77  阅读(213)  评论(0编辑  收藏  举报