|
|
@@ -1,13 +1,12 @@
|
|
|
from django.contrib.contenttypes.models import ContentType
|
|
|
from django.utils.translation import gettext as _
|
|
|
-from drf_spectacular.utils import extend_schema_field
|
|
|
from drf_spectacular.types import OpenApiTypes
|
|
|
+from drf_spectacular.utils import extend_schema_field
|
|
|
from rest_framework.fields import Field
|
|
|
from rest_framework.serializers import ValidationError
|
|
|
|
|
|
from extras.choices import CustomFieldTypeChoices
|
|
|
from extras.models import CustomField
|
|
|
-from netbox.constants import NESTED_SERIALIZER_PREFIX
|
|
|
from utilities.api import get_serializer_for_model
|
|
|
|
|
|
|
|
|
@@ -58,11 +57,11 @@ class CustomFieldsDataField(Field):
|
|
|
for cf in self._get_custom_fields():
|
|
|
value = cf.deserialize(obj.get(cf.name))
|
|
|
if value is not None and cf.type == CustomFieldTypeChoices.TYPE_OBJECT:
|
|
|
- serializer = get_serializer_for_model(cf.object_type.model_class(), prefix=NESTED_SERIALIZER_PREFIX)
|
|
|
- value = serializer(value, context=self.parent.context).data
|
|
|
+ serializer = get_serializer_for_model(cf.object_type.model_class())
|
|
|
+ value = serializer(value, nested=True, context=self.parent.context).data
|
|
|
elif value is not None and cf.type == CustomFieldTypeChoices.TYPE_MULTIOBJECT:
|
|
|
- serializer = get_serializer_for_model(cf.object_type.model_class(), prefix=NESTED_SERIALIZER_PREFIX)
|
|
|
- value = serializer(value, many=True, context=self.parent.context).data
|
|
|
+ serializer = get_serializer_for_model(cf.object_type.model_class())
|
|
|
+ value = serializer(value, nested=True, many=True, context=self.parent.context).data
|
|
|
data[cf.name] = value
|
|
|
|
|
|
return data
|
|
|
@@ -80,12 +79,9 @@ class CustomFieldsDataField(Field):
|
|
|
CustomFieldTypeChoices.TYPE_OBJECT,
|
|
|
CustomFieldTypeChoices.TYPE_MULTIOBJECT
|
|
|
):
|
|
|
- serializer_class = get_serializer_for_model(
|
|
|
- model=cf.object_type.model_class(),
|
|
|
- prefix=NESTED_SERIALIZER_PREFIX
|
|
|
- )
|
|
|
+ serializer_class = get_serializer_for_model(cf.object_type.model_class())
|
|
|
many = cf.type == CustomFieldTypeChoices.TYPE_MULTIOBJECT
|
|
|
- serializer = serializer_class(data=data[cf.name], many=many, context=self.parent.context)
|
|
|
+ serializer = serializer_class(data=data[cf.name], nested=True, many=many, context=self.parent.context)
|
|
|
if serializer.is_valid():
|
|
|
data[cf.name] = [obj['id'] for obj in serializer.data] if many else serializer.data['id']
|
|
|
else:
|