Closed
Description
Environment
- Python version: 3.7.3
- NetBox version: 2.7.2
Steps to Reproduce
- Edit multiple interfaces from a device of choice
- Set "mode" to "tagged" and add some vlans
- Apply
Expected Behavior
Tagged VLANs are saved in all interfaces
Observed Behavior
<class 'TypeError'>
Direct assignment to the forward side of a many-to-many set is prohibited. Use tagged_vlans.set() instead.
Stacktrace:
netbox_1 | 14:57:10: Internal Server Error: /dcim/devices/1/interfaces/edit/
netbox_1 | Traceback (most recent call last):
netbox_1 | File "/usr/local/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
netbox_1 | response = get_response(request)
netbox_1 | File "/usr/local/lib/python3.7/site-packages/django/core/handlers/base.py", line 115, in _get_response
netbox_1 | response = self.process_exception_by_middleware(e, request)
netbox_1 | File "/usr/local/lib/python3.7/site-packages/django/core/handlers/base.py", line 113, in _get_response
netbox_1 | response = wrapped_callback(request, *callback_args, **callback_kwargs)
netbox_1 | File "/usr/local/lib/python3.7/site-packages/django/views/generic/base.py", line 71, in view
netbox_1 | return self.dispatch(request, *args, **kwargs)
netbox_1 | File "/usr/local/lib/python3.7/site-packages/django/contrib/auth/mixins.py", line 85, in dispatch
netbox_1 | return super().dispatch(request, *args, **kwargs)
netbox_1 | File "/usr/local/lib/python3.7/site-packages/django/views/generic/base.py", line 97, in dispatch
netbox_1 | return handler(request, *args, **kwargs)
netbox_1 | File "/opt/netbox/netbox/utilities/views.py", line 638, in post
netbox_1 | if form.is_valid():
netbox_1 | File "/usr/local/lib/python3.7/site-packages/django/forms/forms.py", line 185, in is_valid
netbox_1 | return self.is_bound and not self.errors
netbox_1 | File "/usr/local/lib/python3.7/site-packages/django/forms/forms.py", line 180, in errors
netbox_1 | self.full_clean()
netbox_1 | File "/usr/local/lib/python3.7/site-packages/django/forms/forms.py", line 382, in full_clean
netbox_1 | self._clean_form()
netbox_1 | File "/usr/local/lib/python3.7/site-packages/django/forms/forms.py", line 409, in _clean_form
netbox_1 | cleaned_data = self.clean()
netbox_1 | File "/opt/netbox/netbox/dcim/forms.py", line 112, in clean
netbox_1 | valid_sites = [None, self.cleaned_data['device'].site]
netbox_1 | KeyError: 'device'
Tested this in a fresh docker environment. Worked with 2.6.X.