diff --git a/netbox/dcim/models/devices.py b/netbox/dcim/models/devices.py index 603129228..79dde0b2b 100644 --- a/netbox/dcim/models/devices.py +++ b/netbox/dcim/models/devices.py @@ -659,8 +659,6 @@ class Device(PrimaryModel, ConfigContextModel): raise ValidationError({ 'rack': f"Rack {self.rack} does not belong to location {self.location}.", }) - elif self.rack: - self.location = self.rack.location if self.rack is None: if self.face: @@ -801,6 +799,9 @@ class Device(PrimaryModel, ConfigContextModel): if is_new and not self.airflow: self.airflow = self.device_type.airflow + if self.rack: + self.location = self.rack.location + super().save(*args, **kwargs) # If this is a new Device, instantiate all the related components per the DeviceType definition diff --git a/netbox/netbox/api/serializers/base.py b/netbox/netbox/api/serializers/base.py index 1b107bb29..7fbe7b493 100644 --- a/netbox/netbox/api/serializers/base.py +++ b/netbox/netbox/api/serializers/base.py @@ -39,9 +39,4 @@ class ValidatedModelSerializer(BaseModelSerializer): for k, v in attrs.items(): setattr(instance, k, v) instance.full_clean() - - # copy any changes to data made in full_clean - for k, v in attrs.items(): - data[k] = getattr(instance, k) - return data