Created GetInterfaceSerializer with device not nested.

Added get_serializer_class for InterfaceViewSet.
This commit is contained in:
Julio-Oliveira-Encora 2024-06-10 08:37:31 -03:00
parent 100a68db83
commit bb17d7a908
2 changed files with 11 additions and 1 deletions

View File

@ -32,6 +32,7 @@ __all__ = (
'DeviceBaySerializer',
'FrontPortSerializer',
'InterfaceSerializer',
'GetInterfaceSerializer',
'InventoryItemSerializer',
'ModuleBaySerializer',
'PowerOutletSerializer',
@ -169,7 +170,7 @@ class PowerOutletSerializer(NetBoxModelSerializer, CabledObjectSerializer, Conne
class InterfaceSerializer(NetBoxModelSerializer, CabledObjectSerializer, ConnectedEndpointsSerializer):
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:interface-detail')
device = DeviceSerializer(nested=False)
device = DeviceSerializer(nested=True)
vdcs = SerializedPKRelatedField(
queryset=VirtualDeviceContext.objects.all(),
serializer=VirtualDeviceContextSerializer,
@ -249,6 +250,10 @@ class InterfaceSerializer(NetBoxModelSerializer, CabledObjectSerializer, Connect
return super().validate(data)
class GetInterfaceSerializer(InterfaceSerializer):
device = DeviceSerializer(nested=False)
class RearPortSerializer(NetBoxModelSerializer, CabledObjectSerializer):
url = serializers.HyperlinkedIdentityField(view_name='dcim-api:rearport-detail')
device = DeviceSerializer(nested=True)

View File

@ -440,6 +440,11 @@ class InterfaceViewSet(PathEndpointMixin, NetBoxModelViewSet):
serializer_class = serializers.InterfaceSerializer
filterset_class = filtersets.InterfaceFilterSet
def get_serializer_class(self):
if self.request.method == 'GET':
return serializers.GetInterfaceSerializer
return self.serializer_class
def get_bulk_destroy_queryset(self):
# Ensure child interfaces are deleted prior to their parents
return self.get_queryset().order_by('device', 'parent', CollateAsChar('_name'))