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