定义了一个通用的CRUD(创建、读取、更新、删除)基类CRUDBase,它使用了Tortoise ORM和Pydantic,支持异步操作。通过继承这个基类,可以快速实现对不同模型的CRUD操作,提高开发效率。
导入模块
from typing import Generic, NewType, TypeVar, Any
from pydantic import BaseModel
from tortoise.expressions import Q
from tortoise.models import Model
-
导入了类型提示相关的模块,包括
Generic、NewType、TypeVar、Any。 -
导入了
pydantic的BaseModel,用于数据验证和序列化。 -
导入了
Tortoise ORM的相关模块,包括Q(用于构建查询表达式)和Model(Tortoise ORM的模型基类)。
定义类型
Total = NewType("Total", int)
ModelType = TypeVar("ModelType", bound=Model)
CreateSchemaType = TypeVar("CreateSchemaType", bound=BaseModel)
UpdateSchemaType = TypeVar("UpdateSchemaType", bound=BaseModel)
-
使用
NewType定义了一个新的类型Total,它是一个整数类型,用于表示总数。 - 使用
TypeVar定义了三个类型变量:-
ModelType:表示一个Tortoise ORM模型类型。 -
CreateSchemaType:表示一个用于创建对象的Pydantic模型类型。 -
UpdateSchemaType:表示一个用于更新对象的Pydantic模型类型。
-
定义CRUD基类
class CRUDBase(Generic[ModelType, CreateSchemaType, UpdateSchemaType]):
-
定义了一个泛型类
CRUDBase,它继承自Generic,并指定了三个类型参数:ModelType、CreateSchemaType和UpdateSchemaType。
构造函数
def __init__(self, model: type[ModelType]):
self.model = model
-
构造函数接受一个模型类
model作为参数,并将其赋值给实例变量self.model。
获取单个对象
async def get(self, *args: Q, **kwargs) -> ModelType:
&n

最低0.47元/天 解锁文章
861

被折叠的 条评论
为什么被折叠?



