chore(netbox): Cache serializers

Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>
This commit is contained in:
JCWasmx86 2026-07-02 20:21:50 +02:00 committed by Jeremy Stretch
parent 48ecc712bc
commit c475cd12b7
1 changed files with 8 additions and 2 deletions

View File

@ -22,6 +22,10 @@ class GenericObjectSerializer(serializers.Serializer):
object_id = serializers.IntegerField()
object = serializers.SerializerMethodField(read_only=True)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self._serializer_cache = {}
def to_internal_value(self, data):
data = super().to_internal_value(data)
model = data['object_type'].model_class()
@ -40,5 +44,7 @@ class GenericObjectSerializer(serializers.Serializer):
@extend_schema_field(serializers.JSONField(allow_null=True))
def get_object(self, obj):
serializer = get_serializer_for_model(obj)
return serializer(obj, nested=True, context=self.context).data
if obj.__class__ not in self._serializer_cache:
self._serializer_cache[obj.__class__] = get_serializer_for_model(obj)(nested=True, context=self.context)
serializer = self._serializer_cache[obj.__class__]
return serializer.to_representation(obj)