diff --git a/README.md b/README.md index a2656e8..7501487 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ - **细粒度权限控制**:实现按钮和接口级别的权限控制,确保不同用户或角色在界面操作和接口访问时具有不同的权限限制。 ### 在线预览 -- http://139.9.100.77:9999 +- http://vue-fastapi-admin.com - username: admin - password: 123456 diff --git a/app/core/crud.py b/app/core/crud.py index 8611a68..326b7b9 100644 --- a/app/core/crud.py +++ b/app/core/crud.py @@ -1,4 +1,4 @@ -from typing import Any, Dict, Generic, List, NewType, Tuple, Type, TypeVar, Union +from typing import Any, Dict, Generic, List, NewType, Tuple, Type, TypeVar, Union,Optional from pydantic import BaseModel from tortoise.expressions import Q @@ -17,8 +17,14 @@ def __init__(self, model: Type[ModelType]): async def get(self, id: int) -> ModelType: return await self.model.get(id=id) - async def list(self, page: int, page_size: int, search: Q = Q(), order: list = []) -> Tuple[Total, List[ModelType]]: + + async def list(self,page: int,page_size: int,search: Q = Q(),order: list = [],prefetch_related_fields: Optional[List[str]] = None) -> Tuple[Total, List[ModelType]]: query = self.model.filter(search) + + if prefetch_related_fields: + for field in prefetch_related_fields: + query = query.prefetch_related(field) + return await query.count(), await query.offset((page - 1) * page_size).limit(page_size).order_by(*order) async def create(self, obj_in: CreateSchemaType) -> ModelType: