Skip to content

Commit 8c009d5

Browse files
committed
perf: Set the default value for schema_read to schema_update(you can disable read_fields by setting them to None)
1 parent 7eb7ce0 commit 8c009d5

3 files changed

Lines changed: 5 additions & 2 deletions

File tree

fastapi_amis_admin/crud/_sqlalchemy.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -316,8 +316,10 @@ def _create_schema_filter(self) -> Type[SchemaFilterT]:
316316
)
317317

318318
def _create_schema_read(self) -> Optional[Type[SchemaReadT]]:
319-
if not self.read_fields:
319+
if self.read_fields is None:
320320
return None
321+
# Set the read fields to the schema update if not provided
322+
self.read_fields = self.read_fields or model_fields(self.schema_update)
321323
# Filter out any non-model fields from the read fields
322324
modelfields = self.parser.filter_modelfield(self.read_fields)
323325
# Create the schema using the model fields

fastapi_amis_admin/crud/base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,8 @@ def register_crud(
8181
self.schema_list = schema_list or self.schema_list or self._create_schema_list()
8282
self.schema_filter = schema_filter or self.schema_filter or self._create_schema_filter()
8383
self.schema_create = schema_create or self.schema_create or self._create_schema_create()
84-
self.schema_read = schema_read or self.schema_read or self._create_schema_read()
8584
self.schema_update = schema_update or self.schema_update or self._create_schema_update()
85+
self.schema_read = schema_read or self.schema_read or self._create_schema_read()
8686
self.list_per_page_max = list_per_page_max or self.list_per_page_max
8787
self.paginator = Paginator(perPageMax=self.list_per_page_max)
8888
self.router.add_api_route(

tests/test_crud/test_SqlalchemyCrud_fields.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -364,6 +364,7 @@ class ArticleCrud(SqlalchemyCrud):
364364
async def test_read_fields_and_schema_read_is_none(app: FastAPI, models):
365365
class ArticleCrud(SqlalchemyCrud):
366366
router_prefix = "/article"
367+
read_fields = None
367368

368369
ins = ArticleCrud(models.Article, db.engine).register_crud()
369370

0 commit comments

Comments
 (0)