diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index 8cddf65ec..8d0762b99 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -2,6 +2,10 @@ ## v3.1.9 (FUTURE) +### Bug Fixes + +* [#8546](https://github.com/netbox-community/netbox/issues/8546) - Fix import to restrict bridge, parent, lag to device interfaces + --- ## v3.1.8 (2022-02-15) diff --git a/netbox/dcim/forms/bulk_import.py b/netbox/dcim/forms/bulk_import.py index df8c4ec01..59b59bb00 100644 --- a/netbox/dcim/forms/bulk_import.py +++ b/netbox/dcim/forms/bulk_import.py @@ -605,6 +605,19 @@ class InterfaceCSVForm(CustomFieldModelCSVForm): 'rf_channel_width', 'tx_power', ) + def __init__(self, data=None, *args, **kwargs): + super().__init__(data, *args, **kwargs) + + if data: + # Limit interface choices for parent, bridge and lag to device only + params = {} + if data.get('device'): + params[f"device__{self.fields['device'].to_field_name}"] = data.get('device') + if params: + self.fields['parent'].queryset = self.fields['parent'].queryset.filter(**params) + self.fields['bridge'].queryset = self.fields['bridge'].queryset.filter(**params) + self.fields['lag'].queryset = self.fields['lag'].queryset.filter(**params) + def clean_enabled(self): # Make sure enabled is True when it's not included in the uploaded data if 'enabled' not in self.data: