Closed
Description
Deployment Type
Self-hosted
NetBox Version
v4.0.5
Python Version
3.10
Steps to Reproduce
- Prerequisites:
- a site and a rack on that site
- some random device type
- some random device role
- open developer tools in the browser, network tab
- Proceed with the nav menu to the Devices section and click on "+" to create a new device
- Fill the device name, select the device type, select the site, select the rack
- Click on the "x" icon after the rack element clearing the field
Observe the network tab of devtools for failed GET request.
Expected Behavior
No exception is raised.
Observed Behavior
Internal Server Error: /api/dcim/racks/{{rack}}/elevation/
ValueError at /api/dcim/racks/{{rack}}/elevation/
Field 'id' expected a number but got '{{rack}}'.
Request Method: GET
Request URL: https://netbox.local/api/dcim/racks/%7B%7Brack%7D%7D/elevation/?brief=true&face=front&limit=100
Django Version: 5.0.6
Python Executable: /opt/netbox/venv/bin/python3
Python Version: 3.10.12
Python Path: ['/opt/netbox/netbox', '/opt/netbox', '/opt/netbox/venv/bin', '/usr/lib/python310.zip', '/usr/lib/python3.10', '/usr/lib/python3.10/lib-dynload', '/opt/netbox/venv/lib/python3.10/site-packages']
Server time: Tue, 25 Jun 2024 16:11:46 +0300
Installed Applications:
['django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.humanize',
'django.forms',
'corsheaders',
'django_filters',
'django_htmx',
'django_tables2',
'django_prometheus',
'strawberry_django',
'mptt',
'rest_framework',
'social_django',
'taggit',
'timezone_field',
'core',
'account',
'circuits',
'dcim',
'ipam',
'extras',
'tenancy',
'users',
'utilities',
'virtualization',
'vpn',
'wireless',
'django_rq',
'drf_spectacular',
'drf_spectacular_sidecar']
Installed Middleware:
['strawberry_django.middlewares.debug_toolbar.DebugToolbarMiddleware',
'corsheaders.middleware.CorsMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django_htmx.middleware.HtmxMiddleware',
'netbox.middleware.RemoteUserMiddleware',
'netbox.middleware.CoreMiddleware',
'netbox.middleware.MaintenanceModeMiddleware']
Traceback (most recent call last):
File "/opt/netbox/venv/lib/python3.10/site-packages/django/db/models/fields/__init__.py", line 2117, in get_prep_value
return int(value)
The above exception (invalid literal for int() with base 10: '{{rack}}') was the direct cause of the following exception:
File "/opt/netbox/venv/lib/python3.10/site-packages/django/core/handlers/exception.py", line 55, in inner
response = get_response(request)
File "/opt/netbox/venv/lib/python3.10/site-packages/django/core/handlers/base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/opt/netbox/venv/lib/python3.10/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
return view_func(request, *args, **kwargs)
File "/opt/netbox/venv/lib/python3.10/site-packages/rest_framework/viewsets.py", line 124, in view
return self.dispatch(request, *args, **kwargs)
File "/opt/netbox/netbox/netbox/api/viewsets/__init__.py", line 135, in dispatch
return super().dispatch(request, *args, **kwargs)
File "/opt/netbox/venv/lib/python3.10/site-packages/rest_framework/views.py", line 509, in dispatch
response = self.handle_exception(exc)
File "/opt/netbox/venv/lib/python3.10/site-packages/rest_framework/views.py", line 469, in handle_exception
self.raise_uncaught_exception(exc)
File "/opt/netbox/venv/lib/python3.10/site-packages/rest_framework/views.py", line 480, in raise_uncaught_exception
raise exc
File "/opt/netbox/venv/lib/python3.10/site-packages/rest_framework/views.py", line 506, in dispatch
response = handler(request, *args, **kwargs)
File "/opt/netbox/netbox/dcim/api/views.py", line 184, in elevation
rack = get_object_or_404(self.queryset, pk=pk)
File "/opt/netbox/venv/lib/python3.10/site-packages/django/shortcuts.py", line 86, in get_object_or_404
return queryset.get(*args, **kwargs)
File "/opt/netbox/venv/lib/python3.10/site-packages/django/db/models/query.py", line 635, in get
clone = self._chain() if self.query.combinator else self.filter(*args, **kwargs)
File "/opt/netbox/venv/lib/python3.10/site-packages/django/db/models/query.py", line 1476, in filter
return self._filter_or_exclude(False, args, kwargs)
File "/opt/netbox/venv/lib/python3.10/site-packages/django/db/models/query.py", line 1494, in _filter_or_exclude
clone._filter_or_exclude_inplace(negate, args, kwargs)
File "/opt/netbox/venv/lib/python3.10/site-packages/django/db/models/query.py", line 1501, in _filter_or_exclude_inplace
self._query.add_q(Q(*args, **kwargs))
File "/opt/netbox/venv/lib/python3.10/site-packages/django/db/models/sql/query.py", line 1613, in add_q
clause, _ = self._add_q(q_object, self.used_aliases)
File "/opt/netbox/venv/lib/python3.10/site-packages/django/db/models/sql/query.py", line 1645, in _add_q
child_clause, needed_inner = self.build_filter(
File "/opt/netbox/venv/lib/python3.10/site-packages/django/db/models/sql/query.py", line 1559, in build_filter
condition = self.build_lookup(lookups, col, value)
File "/opt/netbox/venv/lib/python3.10/site-packages/django/db/models/sql/query.py", line 1389, in build_lookup
lookup = lookup_class(lhs, rhs)
File "/opt/netbox/venv/lib/python3.10/site-packages/django/db/models/lookups.py", line 30, in __init__
self.rhs = self.get_prep_lookup()
File "/opt/netbox/venv/lib/python3.10/site-packages/django/db/models/lookups.py", line 364, in get_prep_lookup
return super().get_prep_lookup()
File "/opt/netbox/venv/lib/python3.10/site-packages/django/db/models/lookups.py", line 88, in get_prep_lookup
return self.lhs.output_field.get_prep_value(self.rhs)
File "/opt/netbox/venv/lib/python3.10/site-packages/django/db/models/fields/__init__.py", line 2119, in get_prep_value
raise e.__class__(
Exception Type: ValueError at /api/dcim/racks/{{rack}}/elevation/
Exception Value: Field 'id' expected a number but got '{{rack}}'.
Raised during: dcim.api.views.RackViewSet
Request information:
USER: admin
GET:
brief = 'true'
face = 'front'
limit = '100'
POST: No POST data
FILES: No FILES data