1111
1212
1313class TortoiseModelAdmin (BaseModelAdmin ):
14- def _get_model_fields (self ) -> list [str ]:
15- fields = [f for f in self .model_cls ._meta .fields_db_projection .keys ()]
16- for m2m_field in self .model_cls ._meta .m2m_fields :
17- fields .append (m2m_field )
18- return fields
19-
2014 async def save_model (self , obj : Any , payload : dict , add : bool = False ) -> None :
2115 for key , value in payload .items ():
2216 setattr (obj , key , value )
@@ -38,7 +32,7 @@ async def get_list(
3832 ) -> tuple [list [Any ], int ]:
3933 qs = self .model_cls .all ()
4034
41- fields = self ._get_model_fields ()
35+ fields = self .get_model_fields ()
4236
4337 if filters :
4438 for filter_condition , value in filters .items ():
@@ -94,7 +88,7 @@ async def get_export(
9488 filters : dict | None = None ,
9589 ) -> StringIO | BytesIO | None :
9690 objs , _ = await self .get_list (offset = offset , limit = limit , search = search , sort_by = sort_by , filters = filters )
97- fields = self ._get_model_fields ()
91+ fields = self .get_model_fields ()
9892 hidden_fields = await self .get_hidden_fields ()
9993 m2m_fields = self .model_cls ._meta .m2m_fields
10094 fieldnames = [f for f in fields if f not in hidden_fields and f not in m2m_fields ]
@@ -109,6 +103,12 @@ async def get_export(
109103 return output
110104 return None
111105
106+ def get_model_fields (self ) -> list [str ]:
107+ fields = [f for f in self .model_cls ._meta .fields_db_projection .keys ()]
108+ for m2m_field in self .model_cls ._meta .m2m_fields :
109+ fields .append (m2m_field )
110+ return fields
111+
112112 def get_form_widget (self , field : str ) -> tuple [WidgetType , dict ]:
113113 field_obj = self .model_cls ._meta .fields_map [field ]
114114 field_obj = field_obj .reference if field_obj .reference else field_obj
@@ -188,7 +188,7 @@ def get_form_widget(self, field: str) -> tuple[WidgetType, dict]:
188188
189189 def get_fields (self ) -> Sequence [str ]:
190190 fields = super ().get_fields ()
191- model_fields = self ._get_model_fields ()
191+ model_fields = self .get_model_fields ()
192192 if not fields :
193193 if self .exclude :
194194 return [f for f in model_fields if f not in self .exclude ]
@@ -198,15 +198,15 @@ def get_fields(self) -> Sequence[str]:
198198 def get_list_display (self ) -> Sequence [str ]:
199199 list_display = super ().get_list_display ()
200200 fields_map = self .model_cls ._meta .fields_map
201- model_fields = self ._get_model_fields ()
201+ model_fields = self .get_model_fields ()
202202 if not list_display :
203203 return [f for f in model_fields if getattr (fields_map [f ], "index" , True )]
204204 return [f for f in list_display if f in model_fields ]
205205
206206 def get_form_hidden_fields (self ) -> Sequence [str ]:
207207 fields_map = self .model_cls ._meta .fields_map
208208 form_hidden_fields = super ().get_form_hidden_fields ()
209- model_fields = self ._get_model_fields ()
209+ model_fields = self .get_model_fields ()
210210 if not form_hidden_fields :
211211 return [
212212 f
0 commit comments