From 603253ddd7b8a6b27ae7a636d4fd3781a24500a7 Mon Sep 17 00:00:00 2001 From: Renato Almeida de Oliveira Zaroubin Date: Thu, 27 Feb 2025 02:40:15 +0000 Subject: [PATCH] Removed prefetch for model fields, since its a Serializer and add for tags --- netbox/utilities/api.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/netbox/utilities/api.py b/netbox/utilities/api.py index 39a2395d7..baf7e2f97 100644 --- a/netbox/utilities/api.py +++ b/netbox/utilities/api.py @@ -1,8 +1,6 @@ -from django.contrib.contenttypes.fields import GenericForeignKey from django.core.exceptions import ( FieldDoesNotExist, FieldError, MultipleObjectsReturned, ObjectDoesNotExist, ValidationError, ) -from django.db.models.fields.related import ManyToOneRel, RelatedField from django.db.models import Prefetch from django.urls import reverse from django.utils.module_loading import import_string @@ -107,12 +105,13 @@ def get_prefetches_for_serializer(serializer_class, fields_to_include=None, sour # If the serializer field does not map to a discrete model field, skip it. try: field = model._meta.get_field(model_field_name) - if (isinstance(field, (RelatedField, ManyToOneRel, GenericForeignKey)) and - not issubclass(type(serializer_field), Serializer)): - prefetch_fields.append(field.name) except FieldDoesNotExist: continue + # Prefetch for tags + if field.name == 'tags': + prefetch_fields.append('tags') + # If this field is represented by a nested serializer, recurse to resolve prefetches # for the related object. if serializer_field and source_field is None: @@ -124,7 +123,6 @@ def get_prefetches_for_serializer(serializer_class, fields_to_include=None, sour prefetch_fields.append(subfield) else: prefetch_fields.append(f'{field_name}__{subfield}') - return prefetch_fields