TortoiseORM-Order_By排序,你学会了吗?

开发 后端
在Tortoise中,order_by()方法用于对查询结果进行排序。该方法可以接受一个或多个参数,每个参数表示一个字段名,用于指定排序的依据。字段名可以是模型类的属性名,也可以是数据库表中的列名。方法还可以使用-(减号)来表示降序排列。

Tortoise是一个基于异步IO的Python ORM库,受到Django ORM的启发。Tortoise ORM在设计上考虑到了关系,并且深受优秀而流行的Django ORM的影响。它的设计中注重的是你不仅仅是在处理表格,你是在处理关系型数据。用于操作关系型数据库,如MySQL、PostgreSQL等。在Tortoise中,可以使用order_by()方法对查询结果进行排序,该方法接受一个或多个字段名,可以按照这些字段进行升序或降序排列。

以下是order_by()方法的详细用法说明和示例:

用法说明

在Tortoise中,order_by()方法用于对查询结果进行排序。该方法可以接受一个或多个参数,每个参数表示一个字段名,用于指定排序的依据。字段名可以是模型类的属性名,也可以是数据库表中的列名。方法还可以使用-(减号)来表示降序排列。

pythonCopy codeawait Model.filter(...).order_by('field1', '-field2', 'field3')

上面的代码中,order_by()方法接受了三个参数,分别为field1、-field2和field3。其中,field1表示按照该字段升序排列,-field2表示按照该字段降序排列,field3表示按照该字段升序排列。如果order_by()方法没有指定任何参数,则返回的结果集将按照默认顺序排序,即按照主键升序排列。

示例

下面是一些使用Tortoise库order_by()方法的示例。

假设有一个User模型,用于存储用户信息。该模型包含id、name、age和created_at四个字段,其中id是主键。

pythonCopy codefrom tortoise import fields
from tortoise.models import Model

class User(Model):
id = fields.IntField(pk=True)
name = fields.CharField(max_length=50)
age = fields.IntField()
created_at = fields.DatetimeField(auto_now_add=True)

1、按照name字段升序排列。

pythonCopy codeusers = await User.filter(...).order_by('name')

2、按照age字段降序排列。

pythonCopy codeusers = await User.filter(...).order_by('-age')

3、按照created_at和name字段升序排列。

pythonCopy codeusers = await User.filter(...).order_by('created_at', 'name')

4、按照name字段升序排列,并限制返回结果的数量为10条。

pythonCopy codeusers = await User.filter(...).order_by('name').limit(10)

5、按照关联模型的列进行排序。

如果您有一个包含关联模型的模型,并且想按照关联模型的列对查询结果进行排序,可以使用双下划线(__)指定关联模型的列名。例如,假设您有一个名为Person的模型,其中包含一个名为age的列和一个名为country的列,country列关联一个名为Country的模型,Country模型包含一个名为name的列,您可以使用以下代码按照Country模型的name列对Person模型进行排序:

queryset = QuerySet(Person).order_by('country__name')

以上示例演示了Tortoise库order_by()方法的使用方法,可以根据需要灵活组合使用。

责任编辑:姜华 来源: 今日头条
相关推荐

2022-12-06 08:37:43

2024-02-04 00:00:00

Effect数据组件

2024-01-19 08:25:38

死锁Java通信

2023-07-26 13:11:21

ChatGPT平台工具

2023-01-10 08:43:15

定义DDD架构

2024-01-02 12:05:26

Java并发编程

2023-08-01 12:51:18

WebGPT机器学习模型

2022-07-08 09:27:48

CSSIFC模型

2023-01-30 09:01:54

图表指南图形化

2023-12-12 08:02:10

2023-10-10 11:04:11

Rust难点内存

2022-03-08 08:39:22

gRPC协议云原生

2022-06-16 07:50:35

数据结构链表

2024-03-06 08:28:16

设计模式Java

2023-01-31 08:02:18

2022-12-06 07:53:33

MySQL索引B+树

2023-08-26 21:34:28

Spring源码自定义

2023-05-05 06:54:07

MySQL数据查询

2023-07-30 22:29:51

BDDMockitoAssert测试

2024-02-02 11:03:11

React数据Ref
点赞
收藏

51CTO技术栈公众号