Skip to content

BaseCrud

BaseCrud

  • FastAPICrud路由注册器基类

继承基类

派生子类

  • SQLModelCrud

  • 其他ORM后端暂时未支持, SQLModel已经足够强大...

字段

schema_model

  • 当前模型协议

schema_list

  • 批量查询数据返回协议, 默认: self.schema_model

schema_filter

  • 批量查询数据过滤提交协议, 默认: self.schema_model

schema_create

  • 创建数据提交协议, 默认: self.schema_model

schema_read

  • 读取数据返回协议, 默认: self.schema_model

schema_update

  • 更新数据提交协议, 默认: self.schema_model

pk_name

  • 当前模型主键字符串, 默认: id.
  • 说明: 数据库表有且只能有一个自增加主键.(待拓展)

list_per_page_max

  • 批量读取每页数据数量上限. 默认: None, 无限制.

route_list

  • 批量读取路由函数. 支持同步/异步函数.
@property
def route_list(self) -> Callable

route_read

  • 单项/批量读取路由函数.支持同步/异步函数.
@property
def route_read(self) -> Callable

route_create

  • 单项/批量创建路由函数.支持同步/异步函数.
@property
def route_create(self) -> Callable

route_update

  • 单项/批量更新路由函数.支持同步/异步函数.
@property
def route_update(self) -> Callable

route_delete

  • 单项/批量删除路由函数.支持同步/异步函数.
@property
def route_delete(self) -> Callable

方法:

has_list_permission

  • 检查是否具有批量查询权限.
async def has_list_permission(
    self,
    request: Request,
    paginator: Optional[Paginator],
    filter: Optional[SchemaFilterT],
    **kwargs
) -> bool

has_read_permission

  • 检查是否具有单项查询权限.
async def has_read_permission(
    self,
    request: Request,
    item_id: Optional[List[str]],
    **kwargs
) -> bool

has_create_permission

  • 检查是否具有创建数据权限.
async def has_create_permission(
    self, 
    request: Request, 
    obj: Optional[SchemaCreateT], 
    **kwargs
) -> bool

has_update_permission

  • 检查是否具有更新数据权限.
async def has_update_permission(
    self, 
    request: Request, 
    item_id: Optional[List[str]], 
    obj: Optional[SchemaUpdateT], 
    **kwargs
) -> bool

has_delete_permission

  • 检查是否具有删除数据权限.
async def has_delete_permission(
    self, 
    request: Request, 
    item_id: Optional[List[str]], 
    **kwargs
) -> bool:
    return True

register_crud

  • 注册Crud路由.
def register_crud(
    self,
    schema_list: Type[SchemaListT] = None,
    schema_filter: Type[SchemaFilterT] = None,
    schema_create: Type[SchemaCreateT] = None,
    schema_read: Type[SchemaReadT] = None,
    schema_update: Type[SchemaUpdateT] = None,
    list_max_per_page: int = None,
    depends_list: List[Depends] = None,
    depends_read: List[Depends] = None,
    depends_create: List[Depends] = None,
    depends_update: List[Depends] = None,
    depends_delete: List[Depends] = None
) -> "BaseCrud"