diff --git a/docs/release-notes/version-2.8.md b/docs/release-notes/version-2.8.md index 32d20d700..6d1907eb0 100644 --- a/docs/release-notes/version-2.8.md +++ b/docs/release-notes/version-2.8.md @@ -8,6 +8,7 @@ v2.8.5 (FUTURE) * [#4644](https://github.com/netbox-community/netbox/issues/4644) - Fix ordering of services table by parent * [#4646](https://github.com/netbox-community/netbox/issues/4646) - Correct UI link for reports with custom name * [#4647](https://github.com/netbox-community/netbox/issues/4647) - Fix caching invalidation issue related to assigning new IP addresses to interfaces +* [#4648](https://github.com/netbox-community/netbox/issues/4648) - Fix bulk CSV import of child devices --- diff --git a/netbox/dcim/forms.py b/netbox/dcim/forms.py index 5d3ec1019..cdd42ddae 100644 --- a/netbox/dcim/forms.py +++ b/netbox/dcim/forms.py @@ -1956,7 +1956,7 @@ class ChildDeviceCSVForm(BaseDeviceCSVForm): help_text='Parent device' ) device_bay = CSVModelChoiceField( - queryset=Device.objects.all(), + queryset=DeviceBay.objects.all(), to_field_name='name', help_text='Device bay in which this device is installed' ) @@ -1976,6 +1976,20 @@ class ChildDeviceCSVForm(BaseDeviceCSVForm): params = {f"device__{self.fields['parent'].to_field_name}": data.get('parent')} self.fields['device_bay'].queryset = self.fields['device_bay'].queryset.filter(**params) + def clean(self): + super().clean() + + # Set parent_bay reverse relationship + device_bay = self.cleaned_data.get('device_bay') + if device_bay: + self.instance.parent_bay = device_bay + + # Inherit site and rack from parent device + parent = self.cleaned_data.get('parent') + if parent: + self.instance.site = parent.site + self.instance.rack = parent.rack + class DeviceBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldBulkEditForm): pk = forms.ModelMultipleChoiceField(