fastgenerateapi 1.2.14__tar.gz → 1.2.16__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/PKG-INFO +1 -1
  2. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/__version__.py +1 -1
  3. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/api_view/base_view.py +27 -11
  4. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/api_view/get_all_view.py +33 -17
  5. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/api_view/mixin/utils/xlsx_util.py +0 -1
  6. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/schemas_factory/common_function.py +1 -1
  7. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/settings/app_settings.py +3 -2
  8. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi.egg-info/PKG-INFO +1 -1
  9. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/LICENSE +0 -0
  10. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/README.md +0 -0
  11. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/__init__.py +0 -0
  12. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/api_view/__init__.py +0 -0
  13. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/api_view/api_view.py +0 -0
  14. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/api_view/create_view.py +0 -0
  15. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/api_view/delete_filter_view.py +0 -0
  16. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/api_view/delete_tree_view.py +0 -0
  17. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/api_view/delete_view.py +0 -0
  18. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/api_view/get_one_view.py +0 -0
  19. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/api_view/get_relation_view.py +0 -0
  20. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/api_view/get_tree_view.py +0 -0
  21. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/api_view/mixin/__init__.py +0 -0
  22. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/api_view/mixin/base_mixin.py +0 -0
  23. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/api_view/mixin/dbmodel_mixin.py +0 -0
  24. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/api_view/mixin/get_mixin.py +0 -0
  25. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/api_view/mixin/response_mixin.py +0 -0
  26. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/api_view/mixin/save_mixin.py +0 -0
  27. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/api_view/mixin/tool_mixin.py +0 -0
  28. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/api_view/mixin/utils/__init__.py +0 -0
  29. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/api_view/mixin/utils/docx_util.py +0 -0
  30. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/api_view/mixin/utils/file_util.py +0 -0
  31. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/api_view/mixin/utils/pdf_util.py +0 -0
  32. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/api_view/mixin/utils/zip_util.py +0 -0
  33. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/api_view/switch_view.py +0 -0
  34. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/api_view/update_relation_view.py +0 -0
  35. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/api_view/update_view.py +0 -0
  36. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/cache/__init__.py +0 -0
  37. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/cache/cache_decorator.py +0 -0
  38. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/cache/key_builder.py +0 -0
  39. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/channel/__init__.py +0 -0
  40. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/channel/connection_manager.py +0 -0
  41. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/channel/consumer.py +0 -0
  42. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/channel/websocket_view.py +0 -0
  43. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/controller/__init__.py +0 -0
  44. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/controller/filter_controller.py +0 -0
  45. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/controller/router_controller.py +0 -0
  46. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/controller/rpc_controller.py +0 -0
  47. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/controller/search_controller.py +0 -0
  48. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/controller/ws_controller.py +0 -0
  49. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/data_type/__init__.py +0 -0
  50. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/data_type/data_type.py +0 -0
  51. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/data_type/mysql_data_type.py +0 -0
  52. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/deps/__init__.py +0 -0
  53. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/deps/filter_params_deps.py +0 -0
  54. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/deps/tree_params_deps.py +0 -0
  55. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/example/__init__.py +0 -0
  56. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/example/models.py +0 -0
  57. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/example/routers.py +0 -0
  58. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/example/schemas.py +0 -0
  59. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/example/views.py +0 -0
  60. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/fastapi_utils/__init__.py +0 -0
  61. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/fastapi_utils/all.py +0 -0
  62. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/fastapi_utils/param_utils.py +0 -0
  63. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/fastapi_utils/response_utils.py +0 -0
  64. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/fastapi_utils/tortoise_utils.py +0 -0
  65. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/model/__init__.py +0 -0
  66. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/model/base_model.py +0 -0
  67. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/my_fields/__init__.py +0 -0
  68. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/my_fields/aes_field.py +0 -0
  69. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/my_fields/enum_field.py +0 -0
  70. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/my_fields/pk_field.py +0 -0
  71. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/my_fields/pwd_field.py +0 -0
  72. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/my_fields/soft_delete_field.py +0 -0
  73. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/my_fields/validator.py +0 -0
  74. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/pydantic_utils/__init__.py +0 -0
  75. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/pydantic_utils/base_model.py +0 -0
  76. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/pydantic_utils/base_settings.py +0 -0
  77. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/pydantic_utils/json_encoders.py +0 -0
  78. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/schemas_factory/__init__.py +0 -0
  79. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/schemas_factory/common_schema_factory.py +0 -0
  80. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/schemas_factory/create_schema_factory.py +0 -0
  81. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/schemas_factory/filter_schema_factory.py +0 -0
  82. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/schemas_factory/get_all_schema_factory.py +0 -0
  83. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/schemas_factory/get_one_schema_factory.py +0 -0
  84. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/schemas_factory/get_relation_schema_factory.py +0 -0
  85. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/schemas_factory/get_tree_schema_factory.py +0 -0
  86. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/schemas_factory/response_factory.py +0 -0
  87. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/schemas_factory/sql_get_all_schema_factory.py +0 -0
  88. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/schemas_factory/update_schema_factory.py +0 -0
  89. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/settings/__init__.py +0 -0
  90. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/settings/all_settings.py +0 -0
  91. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/settings/db_settings.py +0 -0
  92. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/settings/etcd_settings.py +0 -0
  93. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/settings/file_settings.py +0 -0
  94. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/settings/jwt_settings.py +0 -0
  95. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/settings/otlp_settings.py +0 -0
  96. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/settings/redis_settings.py +0 -0
  97. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/settings/sms_settings.py +0 -0
  98. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/settings/system_settings.py +0 -0
  99. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/utils/__init__.py +0 -0
  100. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/utils/aes.py +0 -0
  101. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/utils/auto_discover.py +0 -0
  102. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/utils/exception.py +0 -0
  103. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/utils/file_utils.py +0 -0
  104. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/utils/pwd_utils.py +0 -0
  105. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/utils/ramdom_utils.py +0 -0
  106. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/utils/snowflake.py +0 -0
  107. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/utils/str_util.py +0 -0
  108. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/utils/swagger_to_js.py +0 -0
  109. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/validator/__init__.py +0 -0
  110. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi/validator/validator.py +0 -0
  111. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi.egg-info/SOURCES.txt +0 -0
  112. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi.egg-info/dependency_links.txt +0 -0
  113. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/fastgenerateapi.egg-info/top_level.txt +0 -0
  114. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/script/__init__.py +0 -0
  115. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/setup.cfg +0 -0
  116. {fastgenerateapi-1.2.14 → fastgenerateapi-1.2.16}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fastgenerateapi
3
- Version: 1.2.14
3
+ Version: 1.2.16
4
4
  Summary: FastAPIView Class View
5
5
  Author: ShiLiang
6
6
  Author-email: 2509144896@qq.com
@@ -8,7 +8,7 @@
8
8
  # d8888P
9
9
 
10
10
 
11
- VERSION = (1, 2, 14)
11
+ VERSION = (1, 2, 16)
12
12
 
13
13
  __version__ = '.'.join(map(str, VERSION))
14
14
 
@@ -1,10 +1,11 @@
1
1
  import time
2
2
  import uuid
3
3
  from copy import copy
4
- from typing import Optional, Type, List, Union, Sequence, Dict
4
+ from typing import Optional, Type, List, Union, Sequence, Dict, Any
5
5
  from urllib.parse import parse_qs
6
6
 
7
7
  from fastapi import params
8
+ from pydantic._internal._model_construction import ModelMetaclass
8
9
  from tortoise.queryset import QuerySet
9
10
 
10
11
  from pydantic import create_model, BaseModel
@@ -98,8 +99,10 @@ class BaseView(BaseMixin, ResponseMixin, ToolMixin, DBModelMixin):
98
99
 
99
100
  @staticmethod
100
101
  async def setattr_model(model: Model, prefetch_related_fields, *args, **kwargs) -> Model:
102
+ if not prefetch_related_fields:
103
+ return model
101
104
  for key, value_list in prefetch_related_fields.items():
102
- if value_list is None:
105
+ if value_list is None or isinstance(value_list, ModelMetaclass):
103
106
  continue
104
107
  if isinstance(value_list, str):
105
108
  value_list = [value_list]
@@ -113,9 +116,9 @@ class BaseView(BaseMixin, ResponseMixin, ToolMixin, DBModelMixin):
113
116
  key = key.replace("__", "_")
114
117
  for value in value_list:
115
118
  if type(value) == str:
116
- setattr(model, key + "_" + value, getattr(attr_model, value, None) if attr_model else None)
119
+ setattr(model, key + "_" + value, getattr(attr_model, value, None))
117
120
  elif type(value) == tuple and len(value) == 2:
118
- setattr(model, value[1], getattr(attr_model, value[0], None) if attr_model else None)
121
+ setattr(model, value[1], getattr(attr_model, value[0], None))
119
122
  return model
120
123
 
121
124
  @staticmethod
@@ -229,6 +232,25 @@ class BaseView(BaseMixin, ResponseMixin, ToolMixin, DBModelMixin):
229
232
  result[key] = val[0]
230
233
  return result
231
234
 
235
+ def _get_extra_related_schema(self):
236
+ """
237
+ prefetch_related_fields 转换为 extra_include 的参数
238
+ :return:
239
+ """
240
+ schema_include = []
241
+ for key, value in self.prefetch_related_fields.items():
242
+ if not value:
243
+ continue
244
+ if isinstance(value, ModelMetaclass):
245
+ schema_include.append((key, Optional[value]))
246
+ elif type(value) in [list, tuple, set]:
247
+ for val in value:
248
+ val_str = val
249
+ if type(val) in [list, tuple, set]:
250
+ val_str = val[0]
251
+ schema_include.append(key + "__" + val_str)
252
+ return schema_include
253
+
232
254
  def get_response_schema(self):
233
255
  """
234
256
  如果response_schema不存在,则生成
@@ -237,13 +259,7 @@ class BaseView(BaseMixin, ResponseMixin, ToolMixin, DBModelMixin):
237
259
  if not self.response_schema:
238
260
  get_one_schema_include = []
239
261
  if self.is_with_prefetch and self.prefetch_related_fields:
240
- for key, value in self.prefetch_related_fields.items():
241
- if value and type(value) in [list, tuple, set]:
242
- for val in value:
243
- val_str = val
244
- if type(val) in [list, tuple, set]:
245
- val_str = val[0]
246
- get_one_schema_include.append(key + "__" + val_str)
262
+ get_one_schema_include = self._get_extra_related_schema()
247
263
  self.response_schema = get_one_schema_factory(self.model_class, extra_include=get_one_schema_include)
248
264
 
249
265
  return self.response_schema
@@ -7,6 +7,7 @@ from fastapi.types import DecoratedCallable
7
7
  from fastapi_cache import JsonCoder
8
8
  from fastapi_cache.decorator import cache
9
9
  from pydantic import BaseModel
10
+ from starlette._utils import is_async_callable
10
11
  from starlette.requests import Request
11
12
  from starlette.responses import JSONResponse
12
13
  from tortoise import Model
@@ -87,6 +88,12 @@ class GetAllView(BaseView, GetMixin):
87
88
  """
88
89
  return queryset
89
90
 
91
+ async def set_get_all_model_list(self, model_list: List[Model], *args, **kwargs) -> List[Model]:
92
+ """
93
+ 对于查询的model,展示数据处理
94
+ """
95
+ return model_list
96
+
90
97
  async def set_get_all_model(self, model: Model, *args, **kwargs) -> Model:
91
98
  """
92
99
  对于查询的model,展示数据处理
@@ -98,15 +105,17 @@ class GetAllView(BaseView, GetMixin):
98
105
  queryset: QuerySet,
99
106
  schema: Type[BaseModel] = None,
100
107
  paginator: Optional[PagePydantic] = PagePydantic(),
101
- prefetch_related_fields: Optional[dict] = None,
108
+ model_handler: Optional[Callable] = None,
109
+ model_handler_list: Optional[List[Callable]] = None,
102
110
  *args, **kwargs,
103
111
  ):
104
112
  """
105
113
  通用分页函数,获取对应的数据,和分页统计
106
114
  :param queryset:
107
- :param paginator:
108
115
  :param schema:
109
- :param prefetch_related_fields:
116
+ :param paginator:
117
+ :param model_handler:
118
+ :param model_handler_list:
110
119
  :param args:
111
120
  :param kwargs:
112
121
  :return:
@@ -119,20 +128,33 @@ class GetAllView(BaseView, GetMixin):
119
128
  queryset = queryset.offset(cast(int, (paginator.page - 1) * paginator.page_size))
120
129
  model_list = await queryset.limit(paginator.page_size)
121
130
 
131
+ if model_handler:
132
+ if is_async_callable(model_handler):
133
+ model_list = await model_handler(model_list, paginator=paginator, *args, **kwargs)
134
+ else:
135
+ model_list = model_handler(model_list, paginator=paginator, *args, **kwargs)
136
+ if not schema:
137
+ model_list = await self.set_get_all_model_list(model_list, paginator=paginator, *args, **kwargs)
138
+
122
139
  data_list = []
123
140
  for model in model_list:
124
- await self.setattr_model(model, prefetch_related_fields=prefetch_related_fields, *args, **kwargs)
125
- model = await self.set_get_model(model, *args, **kwargs)
126
- model = await self.set_get_all_model(model, *args, **kwargs)
127
-
141
+ await self.setattr_model(model,*args, **kwargs)
142
+ if model_handler_list:
143
+ for i_model_handler in model_handler_list:
144
+ if is_async_callable(i_model_handler):
145
+ model = await i_model_handler(model, paginator=paginator,*args, **kwargs)
146
+ else:
147
+ model = i_model_handler(model, paginator=paginator,*args, **kwargs)
128
148
  if schema:
129
149
  data_list.append(schema.model_validate(model))
130
150
  else:
151
+ model = await self.set_get_model(model, paginator=paginator,*args, **kwargs)
152
+ model = await self.set_get_all_model(model, paginator=paginator, *args, **kwargs)
131
153
  data_list.append(self.get_all_schema.model_validate(model))
132
154
 
133
155
  return data_list, count
134
156
 
135
- def get_page_schema(self, data_list, count = None, schema: Type[BaseModel] = None, paginator: Optional[PagePydantic] = None, *args, **kwargs):
157
+ def get_page_schema_func(self, data_list, count = None, schema: Type[BaseModel] = None, paginator: Optional[PagePydantic] = None, *args, **kwargs):
136
158
  """
137
159
  返回列表结果
138
160
  :param data_list:
@@ -169,7 +191,7 @@ class GetAllView(BaseView, GetMixin):
169
191
  :return:
170
192
  """
171
193
  data_list, count = await self.get_queryset_data(queryset=queryset,*args, **kwargs)
172
- res = self.get_page_schema(data_list, count, *args, **kwargs)
194
+ res = self.get_page_schema_func(data_list, count, *args, **kwargs)
173
195
  return res
174
196
 
175
197
  def _get_all_decorator(self, *args: Any, **kwargs: Any) -> DecoratedCallable:
@@ -212,20 +234,14 @@ class GetAllView(BaseView, GetMixin):
212
234
  if not self.get_all_schema:
213
235
  get_all_schema_include = []
214
236
  if self.prefetch_related_fields:
215
- for key, value in self.prefetch_related_fields.items():
216
- if value and type(value) in [list, tuple, set]:
217
- for val in value:
218
- val_str = val
219
- if type(val) in [list, tuple, set]:
220
- val_str = val[0]
221
- get_all_schema_include.append(key + "__" + val_str)
237
+ get_all_schema_include = self._get_extra_related_schema()
222
238
  if hasattr_get_all_schema(self.model_class) or get_all_schema_include:
223
239
  self.get_all_schema = get_all_schema_factory(self.model_class, extra_include=get_all_schema_include)
224
240
  else:
225
241
  self.get_all_schema = self.get_response_schema()
226
242
  self.get_all_page_schema = get_page_schema_factory(self.get_all_schema)
227
243
  self.get_all_list_schema = get_list_schema_factory(self.get_all_schema)
228
- self.get_all_response_schema_factory = response_factory(self.get_page_schema, name="GetPage")
244
+ self.get_all_response_schema_factory = response_factory(self.get_all_page_schema, name="GetPage")
229
245
  if not self.get_all_summary:
230
246
  doc = self.get_all.__doc__
231
247
  self.get_all_summary = doc.strip().split("\n")[0] if doc else "Get All"
@@ -21,7 +21,6 @@ from fastgenerateapi import BaseModel, BaseView
21
21
  from fastgenerateapi.api_view.mixin.dbmodel_mixin import DBModelMixin
22
22
  from fastgenerateapi.api_view.mixin.response_mixin import ResponseMixin
23
23
  from fastgenerateapi.api_view.mixin.tool_mixin import ToolMixin
24
- from fastgenerateapi.schemas_factory.create_schema_factory import create_schema_factory
25
24
 
26
25
 
27
26
  class XlsxUtil:
@@ -103,7 +103,7 @@ def get_dict_from_pydanticmeta(model_class: Type[Model], data: Union[list, tuple
103
103
  if settings.app_settings.SCHEMAS_UNDERLINE_WHETHER_DOUBLE_TO_SINGLE:
104
104
  key_field = key_field.replace("__", "_")
105
105
  fields_info.setdefault(key_field, (field_type, field_info))
106
- elif isinstance(field, tuple):
106
+ elif isinstance(field, (tuple, list)):
107
107
  key_field = field[0]
108
108
  field_type, field_info = get_field_info_from_model_class(model_class, field[0])
109
109
  if len(field) == 2:
@@ -8,8 +8,9 @@ from fastgenerateapi.pydantic_utils.base_settings import BaseSettings
8
8
 
9
9
  class AppSettings(BaseSettings):
10
10
  # ####################################### 请求参数相关 ###############################################
11
- # 字段配置 驼峰格式:fastgenerateapi.alias_to_camel
12
- # 下划线:pydantic.alias_generators.to_snake
11
+ # 字段配置
12
+ # 【驼峰格式】 推荐<fastgenerateapi.alias_to_camel> 可选<pydantic.alias_generators.to_snake><会忽略双下划线转单下划线配置>
13
+ # 【下划线】<pydantic.alias_generators.to_snake>
13
14
  ALIAS_GENERATOR: Optional[str] = Field(default=None, description="序列化参数命名方法路径")
14
15
  # 分页对应字段以及配置默认值
15
16
  WHETHER_PAGE_FIELD: Optional[str] = Field(default="no_page", description="判断是否分页字段")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fastgenerateapi
3
- Version: 1.2.14
3
+ Version: 1.2.16
4
4
  Summary: FastAPIView Class View
5
5
  Author: ShiLiang
6
6
  Author-email: 2509144896@qq.com