@@ -152,6 +152,18 @@ def get_field_map(self, request) -> dict[str, "SBAdminField"]:
152152
153153 def init_fields_cache (self , fields_source , configuration , force = False ):
154154 from django_smartbase_admin .engine .field import SBAdminField
155+ from django_smartbase_admin .services .thread_local import SBAdminThreadLocalService
156+
157+ try :
158+ request = SBAdminThreadLocalService .get_request ()
159+ except LookupError :
160+ request = None
161+ cache_key = self .get_id ()
162+ if request is not None :
163+ request_field_cache = getattr (request , "_sbadmin_field_cache" , {})
164+ if not force and cache_key in request_field_cache :
165+ self .field_cache = request_field_cache [cache_key ]
166+ return self .field_cache .values ()
155167
156168 fields = []
157169 self .field_cache = {}
@@ -161,6 +173,10 @@ def init_fields_cache(self, fields_source, configuration, force=False):
161173 field .init_field_static (self , configuration )
162174 fields .append (field )
163175 self .field_cache [field .name ] = field
176+ if request is not None :
177+ request_field_cache = getattr (request , "_sbadmin_field_cache" , {})
178+ request_field_cache [cache_key ] = self .field_cache
179+ request ._sbadmin_field_cache = request_field_cache
164180 return fields
165181
166182 def get_action_url (self , action , modifier = "template" ):
0 commit comments