From 4e1e7e9e2ebb7bd9669c98d03fb28c86b99fca82 Mon Sep 17 00:00:00 2001 From: JCWasmx86 Date: Thu, 18 Jun 2026 19:35:01 +0200 Subject: [PATCH] chore(netbox): Cache serializers --- netbox/netbox/api/gfk_fields.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/netbox/netbox/api/gfk_fields.py b/netbox/netbox/api/gfk_fields.py index e0c9006b9..45ad9cd25 100644 --- a/netbox/netbox/api/gfk_fields.py +++ b/netbox/netbox/api/gfk_fields.py @@ -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)