Merge pull request #22491 from JCWasmx86/22442-cache-serializers

chore(netbox): Cache serializers
This commit is contained in:
bctiemann 2026-06-22 20:28:57 -04:00 committed by GitHub
commit bf78a45204
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 9 additions and 2 deletions

View File

@ -10,10 +10,17 @@ __all__ = (
@extend_schema_field(serializers.JSONField(allow_null=True, read_only=True))
class GFKSerializerField(serializers.Field):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self._serializer_cache = {}
def to_representation(self, instance, **kwargs):
if instance is None:
return None
serializer = get_serializer_for_model(instance)
context = {'request': self.context['request']}
return serializer(instance, nested=True, context=context).data
if instance.__class__ not in self._serializer_cache:
serializer = get_serializer_for_model(instance)(nested=True, context=context)
self._serializer_cache[instance.__class__] = serializer
else:
serializer = self._serializer_cache[instance.__class__]
return serializer.to_representation(instance)