Browse Source

Fixes #1371: Extend DeviceSerializer.parent_device to include standard fields

Jeremy Stretch 7 years ago
parent
commit
1770c85689
1 changed files with 12 additions and 8 deletions
  1. 12 8
      netbox/dcim/api/serializers.py

+ 12 - 8
netbox/dcim/api/serializers.py

@@ -473,14 +473,10 @@ class DeviceSerializer(CustomFieldModelSerializer):
             device_bay = obj.parent_bay
             device_bay = obj.parent_bay
         except DeviceBay.DoesNotExist:
         except DeviceBay.DoesNotExist:
             return None
             return None
-        return {
-            'id': device_bay.device.pk,
-            'name': device_bay.device.name,
-            'device_bay': {
-                'id': device_bay.pk,
-                'name': device_bay.name,
-            }
-        }
+        context = {'request': self.context['request']}
+        data = NestedDeviceSerializer(instance=device_bay.device, context=context).data
+        data['device_bay'] = NestedDeviceBaySerializer(instance=device_bay, context=context).data
+        return data
 
 
 
 
 class WritableDeviceSerializer(CustomFieldModelSerializer):
 class WritableDeviceSerializer(CustomFieldModelSerializer):
@@ -690,6 +686,14 @@ class DeviceBaySerializer(serializers.ModelSerializer):
         fields = ['id', 'device', 'name', 'installed_device']
         fields = ['id', 'device', 'name', 'installed_device']
 
 
 
 
+class NestedDeviceBaySerializer(serializers.ModelSerializer):
+    url = serializers.HyperlinkedIdentityField(view_name='dcim-api:devicebay-detail')
+
+    class Meta:
+        model = DeviceBay
+        fields = ['id', 'url', 'name']
+
+
 class WritableDeviceBaySerializer(ModelValidationMixin, serializers.ModelSerializer):
 class WritableDeviceBaySerializer(ModelValidationMixin, serializers.ModelSerializer):
 
 
     class Meta:
     class Meta: