@@ -51,10 +51,10 @@ async def create(self, request: Request, data: Dict[str, Any]) -> Model:
5151
5252class ModelAdmin (DbSession ): # todo inline字段必须都在update_fields内
5353 model : Type [Model ] # model
54- __name : Optional [str ] = None
54+ _name : Optional [str ] = None
5555 list_display : Tuple [str , ...] = ()
5656 inline : Tuple [str , ...] = ()
57- prefix : str
57+ _prefix : str
5858 # search list
5959 searchs : Tuple [str , ...] = ()
6060 filters : Tuple [ModelFilter , ...] = ()
@@ -85,12 +85,17 @@ class ModelAdmin(DbSession): # todo inline字段必须都在update_fields内
8585 ]
8686 _filters = None
8787
88+ @property
8889 def name (self ) -> str :
89- if self .__name is None :
90- self .__name = self .model .__name__
91- return self .__name
90+ if self ._name is None :
91+ self ._name = self .model .__name__
92+ return self ._name
9293
93- def get_filters (self ):
94+ @property
95+ def prefix (self ):
96+ return self ._prefix
97+
98+ def get_filters (self ) -> Dict [str , ModelFilter ]:
9499 if not self ._filters :
95100 self ._filters = {i .name : i for i in self .filters }
96101 return self ._filters
@@ -125,10 +130,10 @@ def get_create_dialogation_button(self, request: Request):
125130 dialog = Dialog (
126131 title = "新增" ,
127132 body = Form (
128- name = f"新增{ self .name () } " ,
129- title = f"新增{ self .name () } " ,
133+ name = f"新增{ self .name } " ,
134+ title = f"新增{ self .name } " ,
130135 body = [(i .get_control (request )) for i in controls .values ()],
131- api = f"post:{ self .name () } /create" ,
136+ api = f"post:{ self .prefix } /create" ,
132137 ),
133138 ),
134139 )
@@ -148,7 +153,7 @@ def get_del_one_button(self):
148153 level = ButtonLevelEnum .link ,
149154 className = "text-danger" ,
150155 confirmText = "确认要删除?" ,
151- api = "delete:" + self .name () + "/delete/$pk" ,
156+ api = "delete:" + self .prefix + "/delete/$pk" ,
152157 )
153158
154159 def get_update_one_button (self , request : Request ):
@@ -159,11 +164,11 @@ def get_update_one_button(self, request: Request):
159164 dialog = Dialog (
160165 title = "修改" ,
161166 body = Form (
162- title = f"修改{ self .name () } " ,
163- name = f"修改{ self .name () } " ,
167+ title = f"修改{ self .name } " ,
168+ name = f"修改{ self .name } " ,
164169 body = body ,
165- api = "put:" + self .name () + "/update/$pk" ,
166- initApi = "get:" + self .name () + "/update/$pk" ,
170+ api = "put:" + self .prefix + "/update/$pk" ,
171+ initApi = "get:" + self .prefix + "/update/$pk" ,
167172 ),
168173 ),
169174 )
@@ -202,9 +207,9 @@ def get_crud(self, request: Request):
202207 columns .extend (self .get_list_page (request ))
203208 columns .append (self .get_operation (request ))
204209 crud = CRUD (
205- api = self .prefix + "/list" ,
210+ api = self ._prefix + "/list" ,
206211 columns = columns ,
207- quickSaveItemApi = self .prefix + "/patch/" + "$pk" ,
212+ quickSaveItemApi = self ._prefix + "/patch/" + "$pk" ,
208213 syncLocation = False ,
209214 )
210215 if len (self .get_filters ()) > 0 :
@@ -224,7 +229,7 @@ def get_list_display_with_pk(self) -> Dict[str, BaseAdminControl]:
224229 return ret
225230
226231 def get_app_page (self , request : Request ):
227- return Page (title = self .name () , body = self .get_crud (request )).dict (exclude_none = True )
232+ return Page (title = self .name , body = self .get_crud (request )).dict (exclude_none = True )
228233
229234 async def put (self , request : Request , pk : str , data : Dict [str , Any ]) -> Model :
230235 obj = await self .get_instance (request , pk )
@@ -314,7 +319,7 @@ async def get_instance(self, request: Request, pk: Any) -> Model:
314319
315320 def make_fields (self ):
316321 if not self .fields .get ("pk" ):
317- self .fields ["pk" ] = create_column ("pk" , self .model ._meta .pk , self .prefix )
322+ self .fields ["pk" ] = create_column ("pk" , self .model ._meta .pk , self ._prefix )
318323 s = []
319324 s .extend (self .list_display )
320325 s .extend (self .create_fields )
@@ -326,7 +331,7 @@ def make_fields(self):
326331 if not field_type :
327332 logger .error (f"can not found field { field } in { self .model .__name__ } " )
328333 continue
329- self .fields [field ] = create_column (field , field_type , self .prefix )
334+ self .fields [field ] = create_column (field , field_type , self ._prefix )
330335
331336 def get_control_field (self , name : str ) -> BaseAdminControl :
332337 ret = self .fields .get (name )
@@ -338,9 +343,9 @@ def __init__(self, prefix: str = None):
338343 if not self .fields :
339344 self .fields = {}
340345 if prefix :
341- self .prefix = prefix
346+ self ._prefix = prefix
342347 else :
343- self .prefix = self .name ()
348+ self ._prefix = self .model . __name__
344349 self .make_fields ()
345350 col_set = set (self .get_list_distplay ())
346351 for i in self .inline :
@@ -378,6 +383,6 @@ def register_model_site(model_group: Dict[str, List[ModelAdmin]]):
378383def get_model_site (resource : str ) -> Optional [ModelAdmin ]:
379384 for m_l in model_list .values ():
380385 for i in m_l :
381- if i .name () == resource :
386+ if i .prefix == resource :
382387 return i
383388 raise not_found_model
0 commit comments