Filtering with null on ID field raises exception #3380

Closed
opened 2025-12-29 18:28:35 +01:00 by adam · 2 comments
Owner

Originally created by @hSaria on GitHub (Feb 22, 2020).

Originally assigned to: @jeremystretch on GitHub.

Environment

  • Python version: 3.6.8
  • NetBox version: 2.7.7

Steps to Reproduce

  1. Go to a page with an ID filter with value of null, like /dcim/devices/?rack_id=null or /ipam/prefixes/?vrf_id=null

Expected Behavior

Page loads and is correctly filtered (e.g. device not in a rack or prefix not in a VRF).

Observed Behavior

Exception

<class 'ValueError'>

invalid literal for int() with base 10: 'null'

Traceback

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/usr/local/lib/python3.6/site-packages/django/views/generic/base.py", line 71, in view
    return self.dispatch(request, *args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/django/contrib/auth/mixins.py", line 85, in dispatch
    return super().dispatch(request, *args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/django/views/generic/base.py", line 97, in dispatch
    return handler(request, *args, **kwargs)
  File "/opt/netbox-dev/netbox/utilities/views.py", line 187, in get
    return render(request, self.template_name, context)
  File "/usr/local/lib/python3.6/site-packages/django/shortcuts.py", line 36, in render
    content = loader.render_to_string(template_name, context, request, using=using)
  File "/usr/local/lib/python3.6/site-packages/django/template/loader.py", line 62, in render_to_string
    return template.render(context, request)
  File "/usr/local/lib/python3.6/site-packages/django/template/backends/django.py", line 61, in render
    return self.template.render(context)
  File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 171, in render
    return self._render(context)
  File "/usr/local/lib/python3.6/site-packages/django/test/utils.py", line 96, in instrumented_test_render
    return self.nodelist.render(context)
  File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 937, in render
    bit = node.render_annotated(context)
  File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 904, in render_annotated
    return self.render(context)
  File "/usr/local/lib/python3.6/site-packages/django/template/loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "/usr/local/lib/python3.6/site-packages/django/test/utils.py", line 96, in instrumented_test_render
    return self.nodelist.render(context)
  File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 937, in render
    bit = node.render_annotated(context)
  File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 904, in render_annotated
    return self.render(context)
  File "/usr/local/lib/python3.6/site-packages/django/template/loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "/usr/local/lib/python3.6/site-packages/django/test/utils.py", line 96, in instrumented_test_render
    return self.nodelist.render(context)
  File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 937, in render
    bit = node.render_annotated(context)
  File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 904, in render_annotated
    return self.render(context)
  File "/usr/local/lib/python3.6/site-packages/django/template/loader_tags.py", line 62, in render
    result = block.nodelist.render(context)
  File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 937, in render
    bit = node.render_annotated(context)
  File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 904, in render_annotated
    return self.render(context)
  File "/usr/local/lib/python3.6/site-packages/django/template/defaulttags.py", line 309, in render
    return nodelist.render(context)
  File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 937, in render
    bit = node.render_annotated(context)
  File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 904, in render_annotated
    return self.render(context)
  File "/usr/local/lib/python3.6/site-packages/django/template/loader_tags.py", line 188, in render
    return template.render(context)
  File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 173, in render
    return self._render(context)
  File "/usr/local/lib/python3.6/site-packages/django/test/utils.py", line 96, in instrumented_test_render
    return self.nodelist.render(context)
  File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 937, in render
    bit = node.render_annotated(context)
  File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 904, in render_annotated
    return self.render(context)
  File "/usr/local/lib/python3.6/site-packages/django/template/defaulttags.py", line 165, in render
    values = list(values)
  File "/usr/local/lib/python3.6/site-packages/django/forms/forms.py", line 158, in __iter__
    yield self[name]
  File "/usr/local/lib/python3.6/site-packages/django/forms/forms.py", line 173, in __getitem__
    self._bound_fields_cache[name] = field.get_bound_field(self, name)
  File "/opt/netbox-dev/netbox/utilities/forms.py", line 576, in get_bound_field
    self.queryset = self.queryset.filter(**{field_name: self.prepare_value(bound_field.data)})
  File "/usr/local/lib/python3.6/site-packages/django/db/models/query.py", line 892, in filter
    return self._filter_or_exclude(False, *args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/django/db/models/query.py", line 910, in _filter_or_exclude
    clone.query.add_q(Q(*args, **kwargs))
  File "/usr/local/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1290, in add_q
    clause, _ = self._add_q(q_object, self.used_aliases)
  File "/usr/local/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1318, in _add_q
    split_subq=split_subq, simple_col=simple_col,
  File "/usr/local/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1251, in build_filter
    condition = self.build_lookup(lookups, col, value)
  File "/usr/local/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1116, in build_lookup
    lookup = lookup_class(lhs, rhs)
  File "/usr/local/lib/python3.6/site-packages/django/db/models/lookups.py", line 20, in __init__
    self.rhs = self.get_prep_lookup()
  File "/usr/local/lib/python3.6/site-packages/django/db/models/lookups.py", line 210, in get_prep_lookup
    rhs_value = self.lhs.output_field.get_prep_value(rhs_value)
  File "/usr/local/lib/python3.6/site-packages/django/db/models/fields/__init__.py", line 972, in get_prep_value
    return int(value)
ValueError: invalid literal for int() with base 10: 'null'
Originally created by @hSaria on GitHub (Feb 22, 2020). Originally assigned to: @jeremystretch on GitHub. ### Environment * Python version: 3.6.8 * NetBox version: 2.7.7 ### Steps to Reproduce 1. Go to a page with an ID filter with value of `null`, like `/dcim/devices/?rack_id=null` or `/ipam/prefixes/?vrf_id=null` <!-- What did you expect to happen? --> ### Expected Behavior Page loads and is correctly filtered (e.g. device not in a rack or prefix not in a VRF). <!-- What happened instead? --> ### Observed Behavior Exception ``` <class 'ValueError'> invalid literal for int() with base 10: 'null' ``` Traceback ``` Traceback (most recent call last): File "/usr/local/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner response = get_response(request) File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py", line 115, in _get_response response = self.process_exception_by_middleware(e, request) File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py", line 113, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/usr/local/lib/python3.6/site-packages/django/views/generic/base.py", line 71, in view return self.dispatch(request, *args, **kwargs) File "/usr/local/lib/python3.6/site-packages/django/contrib/auth/mixins.py", line 85, in dispatch return super().dispatch(request, *args, **kwargs) File "/usr/local/lib/python3.6/site-packages/django/views/generic/base.py", line 97, in dispatch return handler(request, *args, **kwargs) File "/opt/netbox-dev/netbox/utilities/views.py", line 187, in get return render(request, self.template_name, context) File "/usr/local/lib/python3.6/site-packages/django/shortcuts.py", line 36, in render content = loader.render_to_string(template_name, context, request, using=using) File "/usr/local/lib/python3.6/site-packages/django/template/loader.py", line 62, in render_to_string return template.render(context, request) File "/usr/local/lib/python3.6/site-packages/django/template/backends/django.py", line 61, in render return self.template.render(context) File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 171, in render return self._render(context) File "/usr/local/lib/python3.6/site-packages/django/test/utils.py", line 96, in instrumented_test_render return self.nodelist.render(context) File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 937, in render bit = node.render_annotated(context) File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 904, in render_annotated return self.render(context) File "/usr/local/lib/python3.6/site-packages/django/template/loader_tags.py", line 150, in render return compiled_parent._render(context) File "/usr/local/lib/python3.6/site-packages/django/test/utils.py", line 96, in instrumented_test_render return self.nodelist.render(context) File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 937, in render bit = node.render_annotated(context) File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 904, in render_annotated return self.render(context) File "/usr/local/lib/python3.6/site-packages/django/template/loader_tags.py", line 150, in render return compiled_parent._render(context) File "/usr/local/lib/python3.6/site-packages/django/test/utils.py", line 96, in instrumented_test_render return self.nodelist.render(context) File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 937, in render bit = node.render_annotated(context) File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 904, in render_annotated return self.render(context) File "/usr/local/lib/python3.6/site-packages/django/template/loader_tags.py", line 62, in render result = block.nodelist.render(context) File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 937, in render bit = node.render_annotated(context) File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 904, in render_annotated return self.render(context) File "/usr/local/lib/python3.6/site-packages/django/template/defaulttags.py", line 309, in render return nodelist.render(context) File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 937, in render bit = node.render_annotated(context) File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 904, in render_annotated return self.render(context) File "/usr/local/lib/python3.6/site-packages/django/template/loader_tags.py", line 188, in render return template.render(context) File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 173, in render return self._render(context) File "/usr/local/lib/python3.6/site-packages/django/test/utils.py", line 96, in instrumented_test_render return self.nodelist.render(context) File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 937, in render bit = node.render_annotated(context) File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 904, in render_annotated return self.render(context) File "/usr/local/lib/python3.6/site-packages/django/template/defaulttags.py", line 165, in render values = list(values) File "/usr/local/lib/python3.6/site-packages/django/forms/forms.py", line 158, in __iter__ yield self[name] File "/usr/local/lib/python3.6/site-packages/django/forms/forms.py", line 173, in __getitem__ self._bound_fields_cache[name] = field.get_bound_field(self, name) File "/opt/netbox-dev/netbox/utilities/forms.py", line 576, in get_bound_field self.queryset = self.queryset.filter(**{field_name: self.prepare_value(bound_field.data)}) File "/usr/local/lib/python3.6/site-packages/django/db/models/query.py", line 892, in filter return self._filter_or_exclude(False, *args, **kwargs) File "/usr/local/lib/python3.6/site-packages/django/db/models/query.py", line 910, in _filter_or_exclude clone.query.add_q(Q(*args, **kwargs)) File "/usr/local/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1290, in add_q clause, _ = self._add_q(q_object, self.used_aliases) File "/usr/local/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1318, in _add_q split_subq=split_subq, simple_col=simple_col, File "/usr/local/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1251, in build_filter condition = self.build_lookup(lookups, col, value) File "/usr/local/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1116, in build_lookup lookup = lookup_class(lhs, rhs) File "/usr/local/lib/python3.6/site-packages/django/db/models/lookups.py", line 20, in __init__ self.rhs = self.get_prep_lookup() File "/usr/local/lib/python3.6/site-packages/django/db/models/lookups.py", line 210, in get_prep_lookup rhs_value = self.lhs.output_field.get_prep_value(rhs_value) File "/usr/local/lib/python3.6/site-packages/django/db/models/fields/__init__.py", line 972, in get_prep_value return int(value) ValueError: invalid literal for int() with base 10: 'null' ```
adam added the type: bugstatus: accepted labels 2025-12-29 18:28:35 +01:00
adam closed this issue 2025-12-29 18:28:35 +01:00
Author
Owner

@hSaria commented on GitHub (Feb 24, 2020):

The fix caused a regression; go to a device's edit page /dcim/devices/25/edit/. This can also be triggered if you edit an object within a tenant that belongs to a tenant group.

Exception

<class 'TypeError'>

int() argument must be a string, a bytes-like object or a number, not 'Manufacturer'

Traceback

19:28:03: Internal Server Error: /dcim/devices/25/edit/
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/usr/local/lib/python3.6/site-packages/django/views/generic/base.py", line 71, in view
    return self.dispatch(request, *args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/django/contrib/auth/mixins.py", line 85, in dispatch
    return super().dispatch(request, *args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/django/views/generic/base.py", line 97, in dispatch
    return handler(request, *args, **kwargs)
  File "/opt/netbox-dev/netbox/utilities/views.py", line 234, in get
    'return_url': self.get_return_url(request, obj),
  File "/usr/local/lib/python3.6/site-packages/django/shortcuts.py", line 36, in render
    content = loader.render_to_string(template_name, context, request, using=using)
  File "/usr/local/lib/python3.6/site-packages/django/template/loader.py", line 62, in render_to_string
    return template.render(context, request)
  File "/usr/local/lib/python3.6/site-packages/django/template/backends/django.py", line 61, in render
    return self.template.render(context)
  File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 171, in render
    return self._render(context)
  File "/usr/local/lib/python3.6/site-packages/django/test/utils.py", line 96, in instrumented_test_render
    return self.nodelist.render(context)
  File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 937, in render
    bit = node.render_annotated(context)
  File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 904, in render_annotated
    return self.render(context)
  File "/usr/local/lib/python3.6/site-packages/django/template/loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "/usr/local/lib/python3.6/site-packages/django/test/utils.py", line 96, in instrumented_test_render
    return self.nodelist.render(context)
  File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 937, in render
    bit = node.render_annotated(context)
  File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 904, in render_annotated
    return self.render(context)
  File "/usr/local/lib/python3.6/site-packages/django/template/loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "/usr/local/lib/python3.6/site-packages/django/test/utils.py", line 96, in instrumented_test_render
    return self.nodelist.render(context)
  File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 937, in render
    bit = node.render_annotated(context)
  File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 904, in render_annotated
    return self.render(context)
  File "/usr/local/lib/python3.6/site-packages/django/template/loader_tags.py", line 62, in render
    result = block.nodelist.render(context)
  File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 937, in render
    bit = node.render_annotated(context)
  File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 904, in render_annotated
    return self.render(context)
  File "/usr/local/lib/python3.6/site-packages/django/template/defaulttags.py", line 161, in render
    values = self.sequence.resolve(context, ignore_failures=True)
  File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 671, in resolve
    obj = self.var.resolve(context)
  File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 796, in resolve
    value = self._resolve_lookup(context)
  File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 858, in _resolve_lookup
    current = current()
  File "/usr/local/lib/python3.6/site-packages/django/forms/forms.py", line 480, in hidden_fields
    return [field for field in self if field.is_hidden]
  File "/usr/local/lib/python3.6/site-packages/django/forms/forms.py", line 480, in <listcomp>
    return [field for field in self if field.is_hidden]
  File "/usr/local/lib/python3.6/site-packages/django/forms/forms.py", line 158, in __iter__
    yield self[name]
  File "/usr/local/lib/python3.6/site-packages/django/forms/forms.py", line 173, in __getitem__
    self._bound_fields_cache[name] = field.get_bound_field(self, name)
  File "/opt/netbox-dev/netbox/utilities/forms.py", line 578, in get_bound_field
    self.queryset = filter.filter(self.queryset, data)
  File "/usr/local/lib/python3.6/site-packages/django_filters/filters.py", line 170, in filter
    return super().filter(qs, value)
  File "/usr/local/lib/python3.6/site-packages/django_filters/filters.py", line 149, in filter
    qs = self.get_method(qs)(**{lookup: value})
  File "/usr/local/lib/python3.6/site-packages/django/db/models/query.py", line 892, in filter
    return self._filter_or_exclude(False, *args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/django/db/models/query.py", line 910, in _filter_or_exclude
    clone.query.add_q(Q(*args, **kwargs))
  File "/usr/local/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1290, in add_q
    clause, _ = self._add_q(q_object, self.used_aliases)
  File "/usr/local/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1318, in _add_q
    split_subq=split_subq, simple_col=simple_col,
  File "/usr/local/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1251, in build_filter
    condition = self.build_lookup(lookups, col, value)
  File "/usr/local/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1116, in build_lookup
    lookup = lookup_class(lhs, rhs)
  File "/usr/local/lib/python3.6/site-packages/django/db/models/lookups.py", line 20, in __init__
    self.rhs = self.get_prep_lookup()
  File "/usr/local/lib/python3.6/site-packages/django/db/models/lookups.py", line 70, in get_prep_lookup
    return self.lhs.output_field.get_prep_value(self.rhs)
  File "/usr/local/lib/python3.6/site-packages/django/db/models/fields/__init__.py", line 972, in get_prep_value
    return int(value)
TypeError: int() argument must be a string, a bytes-like object or a number, not 'Manufacturer'

I can create a new issue for this if you like, but I figured it's not worth as this isn't out of dev yet.

@hSaria commented on GitHub (Feb 24, 2020): The fix caused a regression; go to a device's edit page `/dcim/devices/25/edit/`. This can also be triggered if you edit an object within a tenant that belongs to a tenant group. Exception ``` <class 'TypeError'> int() argument must be a string, a bytes-like object or a number, not 'Manufacturer' ``` Traceback ``` 19:28:03: Internal Server Error: /dcim/devices/25/edit/ Traceback (most recent call last): File "/usr/local/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner response = get_response(request) File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py", line 115, in _get_response response = self.process_exception_by_middleware(e, request) File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py", line 113, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/usr/local/lib/python3.6/site-packages/django/views/generic/base.py", line 71, in view return self.dispatch(request, *args, **kwargs) File "/usr/local/lib/python3.6/site-packages/django/contrib/auth/mixins.py", line 85, in dispatch return super().dispatch(request, *args, **kwargs) File "/usr/local/lib/python3.6/site-packages/django/views/generic/base.py", line 97, in dispatch return handler(request, *args, **kwargs) File "/opt/netbox-dev/netbox/utilities/views.py", line 234, in get 'return_url': self.get_return_url(request, obj), File "/usr/local/lib/python3.6/site-packages/django/shortcuts.py", line 36, in render content = loader.render_to_string(template_name, context, request, using=using) File "/usr/local/lib/python3.6/site-packages/django/template/loader.py", line 62, in render_to_string return template.render(context, request) File "/usr/local/lib/python3.6/site-packages/django/template/backends/django.py", line 61, in render return self.template.render(context) File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 171, in render return self._render(context) File "/usr/local/lib/python3.6/site-packages/django/test/utils.py", line 96, in instrumented_test_render return self.nodelist.render(context) File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 937, in render bit = node.render_annotated(context) File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 904, in render_annotated return self.render(context) File "/usr/local/lib/python3.6/site-packages/django/template/loader_tags.py", line 150, in render return compiled_parent._render(context) File "/usr/local/lib/python3.6/site-packages/django/test/utils.py", line 96, in instrumented_test_render return self.nodelist.render(context) File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 937, in render bit = node.render_annotated(context) File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 904, in render_annotated return self.render(context) File "/usr/local/lib/python3.6/site-packages/django/template/loader_tags.py", line 150, in render return compiled_parent._render(context) File "/usr/local/lib/python3.6/site-packages/django/test/utils.py", line 96, in instrumented_test_render return self.nodelist.render(context) File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 937, in render bit = node.render_annotated(context) File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 904, in render_annotated return self.render(context) File "/usr/local/lib/python3.6/site-packages/django/template/loader_tags.py", line 62, in render result = block.nodelist.render(context) File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 937, in render bit = node.render_annotated(context) File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 904, in render_annotated return self.render(context) File "/usr/local/lib/python3.6/site-packages/django/template/defaulttags.py", line 161, in render values = self.sequence.resolve(context, ignore_failures=True) File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 671, in resolve obj = self.var.resolve(context) File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 796, in resolve value = self._resolve_lookup(context) File "/usr/local/lib/python3.6/site-packages/django/template/base.py", line 858, in _resolve_lookup current = current() File "/usr/local/lib/python3.6/site-packages/django/forms/forms.py", line 480, in hidden_fields return [field for field in self if field.is_hidden] File "/usr/local/lib/python3.6/site-packages/django/forms/forms.py", line 480, in <listcomp> return [field for field in self if field.is_hidden] File "/usr/local/lib/python3.6/site-packages/django/forms/forms.py", line 158, in __iter__ yield self[name] File "/usr/local/lib/python3.6/site-packages/django/forms/forms.py", line 173, in __getitem__ self._bound_fields_cache[name] = field.get_bound_field(self, name) File "/opt/netbox-dev/netbox/utilities/forms.py", line 578, in get_bound_field self.queryset = filter.filter(self.queryset, data) File "/usr/local/lib/python3.6/site-packages/django_filters/filters.py", line 170, in filter return super().filter(qs, value) File "/usr/local/lib/python3.6/site-packages/django_filters/filters.py", line 149, in filter qs = self.get_method(qs)(**{lookup: value}) File "/usr/local/lib/python3.6/site-packages/django/db/models/query.py", line 892, in filter return self._filter_or_exclude(False, *args, **kwargs) File "/usr/local/lib/python3.6/site-packages/django/db/models/query.py", line 910, in _filter_or_exclude clone.query.add_q(Q(*args, **kwargs)) File "/usr/local/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1290, in add_q clause, _ = self._add_q(q_object, self.used_aliases) File "/usr/local/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1318, in _add_q split_subq=split_subq, simple_col=simple_col, File "/usr/local/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1251, in build_filter condition = self.build_lookup(lookups, col, value) File "/usr/local/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1116, in build_lookup lookup = lookup_class(lhs, rhs) File "/usr/local/lib/python3.6/site-packages/django/db/models/lookups.py", line 20, in __init__ self.rhs = self.get_prep_lookup() File "/usr/local/lib/python3.6/site-packages/django/db/models/lookups.py", line 70, in get_prep_lookup return self.lhs.output_field.get_prep_value(self.rhs) File "/usr/local/lib/python3.6/site-packages/django/db/models/fields/__init__.py", line 972, in get_prep_value return int(value) TypeError: int() argument must be a string, a bytes-like object or a number, not 'Manufacturer' ``` I can create a new issue for this if you like, but I figured it's not worth as this isn't out of dev yet.
Author
Owner

@jeremystretch commented on GitHub (Feb 24, 2020):

Nice catch @hSaria! I've wrapped the form data with prepare_value() in 25d126d4 which I believe should fix this.

I've also opened #4250 as this has highlighted the need for testing the initial, non-bound loading of the edit/delete views.

@jeremystretch commented on GitHub (Feb 24, 2020): Nice catch @hSaria! I've wrapped the form data with `prepare_value()` in 25d126d4 which I believe should fix this. I've also opened #4250 as this has highlighted the need for testing the initial, non-bound loading of the edit/delete views.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/netbox#3380