Server error when trying to view "Inventory Items" list #3682

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

Originally created by @hoalex on GitHub (May 13, 2020).

Originally assigned to: @DanSheps on GitHub.

Environment

  • Python version: 3.6.8
  • NetBox version: 2.8.3

Steps to Reproduce

  1. Disable any installed plugins by commenting out the PLUGINS setting in
    configuration.py.
  2. Navigate to Devices -> Inventory Items

Expected Behavior

A list of all inventory items should appear.

Observed Behavior

A server error appears:

2020-05-13 08_36_11-Server Error

<class 'ValueError'>

'manufacturer__name' does not resolve to an item that supports prefetching - this is an invalid parameter to prefetch_related().
Originally created by @hoalex on GitHub (May 13, 2020). Originally assigned to: @DanSheps on GitHub. <!-- NOTE: IF YOUR ISSUE DOES NOT FOLLOW THIS TEMPLATE, IT WILL BE CLOSED. This form is only for reproducible bugs. If you need assistance with NetBox installation, or if you have a general question, DO NOT open an issue. Instead, post to our mailing list: https://groups.google.com/forum/#!forum/netbox-discuss Please describe the environment in which you are running NetBox. Be sure that you are running an unmodified instance of the latest stable release before submitting a bug report, and that any plugins have been disabled. --> ### Environment * Python version: 3.6.8 * NetBox version: 2.8.3 <!-- Describe in detail the exact steps that someone else can take to reproduce this bug using the current stable release of NetBox. Begin with the creation of any necessary database objects and call out every operation being performed explicitly. If reporting a bug in the REST API, be sure to reconstruct the raw HTTP request(s) being made: Don't rely on a client library such as pynetbox. --> ### Steps to Reproduce 1. Disable any installed plugins by commenting out the `PLUGINS` setting in `configuration.py`. 2. Navigate to `Devices` -> `Inventory Items` <!-- What did you expect to happen? --> ### Expected Behavior A list of all inventory items should appear. <!-- What happened instead? --> ### Observed Behavior A server error appears: ![2020-05-13 08_36_11-Server Error](https://user-images.githubusercontent.com/6103894/81779514-282a9880-94f5-11ea-910d-8b73b9e4b1cd.png) ``` <class 'ValueError'> 'manufacturer__name' does not resolve to an item that supports prefetching - this is an invalid parameter to prefetch_related(). ```
adam added the type: bugstatus: accepted labels 2025-12-29 18:30:35 +01:00
adam closed this issue 2025-12-29 18:30:35 +01:00
Author
Owner

@jeremystretch commented on GitHub (May 13, 2020):

I'm not able to replicate this by simply navigating to the view. Can you please provide more detail as to specifically what you're doing? Does it still occur if you reset your table configuration (Configure -> Reset)? Also, can you please post the complete stack trace?

@jeremystretch commented on GitHub (May 13, 2020): I'm not able to replicate this by simply navigating to the view. Can you please provide more detail as to specifically what you're doing? Does it still occur if you reset your table configuration (Configure -> Reset)? Also, can you please post the complete stack trace?
Author
Owner

@matte4711 commented on GitHub (May 13, 2020):

This is the stacktrace from our staging instance of Netbox.

Template error:
In template /opt/netbox/netbox/templates/inc/table.html, error at line 18
   'manufacturer__name' does not resolve to an item that supports prefetching - this is an invalid parameter to prefetch_related().
   8 :                     {% if column.orderable %}
   9 :                         <th {{ column.attrs.th.as_html }}><a href="{% querystring table.prefixed_order_by_field=column.order_by_alias.next %}">{{ column.header }}</a></th>
   10 :                     {% else %}
   11 :                         <th {{ column.attrs.th.as_html }}>{{ column.header }}</th>
   12 :                     {% endif %}
   13 :                 {% endfor %}
   14 :             </tr>
   15 :         </thead>
   16 :     {% endif %}
   17 :     <tbody>
   18 :          {% for row in table.page.object_list|default:table.rows %} 
   19 :             <tr {{ row.attrs.as_html }}>
   20 :                 {% for column, cell in row.items %}
   21 :                     <td {{ column.attrs.td.as_html }}>{{ cell }}</td>
   22 :                 {% endfor %}
   23 :             </tr>
   24 :         {% empty %}
   25 :             {% if table.empty_text %}
   26 :                 <tr>
   27 :                     <td colspan="{{ table.columns|length }}" class="text-center text-muted">&mdash; {{ table.empty_text }} &mdash;</td>
   28 :                 </tr>


Traceback (most recent call last):
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/core/handlers/base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/core/handlers/base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/views/generic/base.py", line 71, in view
    return self.dispatch(request, *args, **kwargs)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/contrib/auth/mixins.py", line 85, in dispatch
    return super().dispatch(request, *args, **kwargs)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/views/generic/base.py", line 97, in dispatch
    return handler(request, *args, **kwargs)
  File "/opt/netbox/netbox/utilities/views.py", line 194, in get
    return render(request, self.template_name, context)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/shortcuts.py", line 19, in render
    content = loader.render_to_string(template_name, context, request, using=using)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/loader.py", line 62, in render_to_string
    return template.render(context, request)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/backends/django.py", line 61, in render
    return self.template.render(context)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/base.py", line 171, in render
    return self._render(context)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/test/utils.py", line 95, in instrumented_test_render
    return self.nodelist.render(context)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/base.py", line 936, in render
    bit = node.render_annotated(context)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated
    return self.render(context)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/test/utils.py", line 95, in instrumented_test_render
    return self.nodelist.render(context)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/base.py", line 936, in render
    bit = node.render_annotated(context)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated
    return self.render(context)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/loader_tags.py", line 62, in render
    result = block.nodelist.render(context)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/base.py", line 936, in render
    bit = node.render_annotated(context)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated
    return self.render(context)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/defaulttags.py", line 513, in render
    return self.nodelist.render(context)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/base.py", line 936, in render
    bit = node.render_annotated(context)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated
    return self.render(context)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/defaulttags.py", line 309, in render
    return nodelist.render(context)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/base.py", line 936, in render
    bit = node.render_annotated(context)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated
    return self.render(context)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/loader_tags.py", line 188, in render
    return template.render(context)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/base.py", line 173, in render
    return self._render(context)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/test/utils.py", line 95, in instrumented_test_render
    return self.nodelist.render(context)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/base.py", line 936, in render
    bit = node.render_annotated(context)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated
    return self.render(context)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django_tables2/templatetags/django_tables2.py", line 167, in render
    return template.render(context={"table": table}, request=request)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/backends/django.py", line 61, in render
    return self.template.render(context)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/base.py", line 171, in render
    return self._render(context)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/test/utils.py", line 95, in instrumented_test_render
    return self.nodelist.render(context)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/base.py", line 936, in render
    bit = node.render_annotated(context)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated
    return self.render(context)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/defaulttags.py", line 161, in render
    values = self.sequence.resolve(context, ignore_failures=True)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/base.py", line 697, in resolve
    new_obj = func(obj, *arg_vals)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/defaultfilters.py", line 754, in default
    return value or arg
  File "/opt/netbox/venv/lib/python3.7/site-packages/django_tables2/rows.py", line 330, in __len__
    length = len(self.data)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/db/models/query.py", line 258, in __len__
    self._fetch_all()
  File "/opt/netbox/venv/lib/python3.7/site-packages/cacheops/query.py", line 323, in _fetch_all
    return self._no_monkey._fetch_all(self)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/db/models/query.py", line 1263, in _fetch_all
    self._prefetch_related_objects()
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/db/models/query.py", line 782, in _prefetch_related_objects
    prefetch_related_objects(self._result_cache, *self._prefetch_related_lookups)
  File "/opt/netbox/venv/lib/python3.7/site-packages/django/db/models/query.py", line 1648, in prefetch_related_objects
    "prefetch_related()." % lookup.prefetch_through)

Exception Type: ValueError at /dcim/inventory-items/
Exception Value: 'manufacturer__name' does not resolve to an item that supports prefetching - this is an invalid parameter to prefetch_related().
@matte4711 commented on GitHub (May 13, 2020): This is the stacktrace from our staging instance of Netbox. ``` Template error: In template /opt/netbox/netbox/templates/inc/table.html, error at line 18 'manufacturer__name' does not resolve to an item that supports prefetching - this is an invalid parameter to prefetch_related(). 8 : {% if column.orderable %} 9 : <th {{ column.attrs.th.as_html }}><a href="{% querystring table.prefixed_order_by_field=column.order_by_alias.next %}">{{ column.header }}</a></th> 10 : {% else %} 11 : <th {{ column.attrs.th.as_html }}>{{ column.header }}</th> 12 : {% endif %} 13 : {% endfor %} 14 : </tr> 15 : </thead> 16 : {% endif %} 17 : <tbody> 18 : {% for row in table.page.object_list|default:table.rows %} 19 : <tr {{ row.attrs.as_html }}> 20 : {% for column, cell in row.items %} 21 : <td {{ column.attrs.td.as_html }}>{{ cell }}</td> 22 : {% endfor %} 23 : </tr> 24 : {% empty %} 25 : {% if table.empty_text %} 26 : <tr> 27 : <td colspan="{{ table.columns|length }}" class="text-center text-muted">&mdash; {{ table.empty_text }} &mdash;</td> 28 : </tr> Traceback (most recent call last): File "/opt/netbox/venv/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner response = get_response(request) File "/opt/netbox/venv/lib/python3.7/site-packages/django/core/handlers/base.py", line 115, in _get_response response = self.process_exception_by_middleware(e, request) File "/opt/netbox/venv/lib/python3.7/site-packages/django/core/handlers/base.py", line 113, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/opt/netbox/venv/lib/python3.7/site-packages/django/views/generic/base.py", line 71, in view return self.dispatch(request, *args, **kwargs) File "/opt/netbox/venv/lib/python3.7/site-packages/django/contrib/auth/mixins.py", line 85, in dispatch return super().dispatch(request, *args, **kwargs) File "/opt/netbox/venv/lib/python3.7/site-packages/django/views/generic/base.py", line 97, in dispatch return handler(request, *args, **kwargs) File "/opt/netbox/netbox/utilities/views.py", line 194, in get return render(request, self.template_name, context) File "/opt/netbox/venv/lib/python3.7/site-packages/django/shortcuts.py", line 19, in render content = loader.render_to_string(template_name, context, request, using=using) File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/loader.py", line 62, in render_to_string return template.render(context, request) File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/backends/django.py", line 61, in render return self.template.render(context) File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/base.py", line 171, in render return self._render(context) File "/opt/netbox/venv/lib/python3.7/site-packages/django/test/utils.py", line 95, in instrumented_test_render return self.nodelist.render(context) File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/base.py", line 936, in render bit = node.render_annotated(context) File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated return self.render(context) File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/loader_tags.py", line 150, in render return compiled_parent._render(context) File "/opt/netbox/venv/lib/python3.7/site-packages/django/test/utils.py", line 95, in instrumented_test_render return self.nodelist.render(context) File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/base.py", line 936, in render bit = node.render_annotated(context) File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated return self.render(context) File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/loader_tags.py", line 62, in render result = block.nodelist.render(context) File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/base.py", line 936, in render bit = node.render_annotated(context) File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated return self.render(context) File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/defaulttags.py", line 513, in render return self.nodelist.render(context) File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/base.py", line 936, in render bit = node.render_annotated(context) File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated return self.render(context) File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/defaulttags.py", line 309, in render return nodelist.render(context) File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/base.py", line 936, in render bit = node.render_annotated(context) File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated return self.render(context) File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/loader_tags.py", line 188, in render return template.render(context) File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/base.py", line 173, in render return self._render(context) File "/opt/netbox/venv/lib/python3.7/site-packages/django/test/utils.py", line 95, in instrumented_test_render return self.nodelist.render(context) File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/base.py", line 936, in render bit = node.render_annotated(context) File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated return self.render(context) File "/opt/netbox/venv/lib/python3.7/site-packages/django_tables2/templatetags/django_tables2.py", line 167, in render return template.render(context={"table": table}, request=request) File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/backends/django.py", line 61, in render return self.template.render(context) File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/base.py", line 171, in render return self._render(context) File "/opt/netbox/venv/lib/python3.7/site-packages/django/test/utils.py", line 95, in instrumented_test_render return self.nodelist.render(context) File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/base.py", line 936, in render bit = node.render_annotated(context) File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated return self.render(context) File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/defaulttags.py", line 161, in render values = self.sequence.resolve(context, ignore_failures=True) File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/base.py", line 697, in resolve new_obj = func(obj, *arg_vals) File "/opt/netbox/venv/lib/python3.7/site-packages/django/template/defaultfilters.py", line 754, in default return value or arg File "/opt/netbox/venv/lib/python3.7/site-packages/django_tables2/rows.py", line 330, in __len__ length = len(self.data) File "/opt/netbox/venv/lib/python3.7/site-packages/django/db/models/query.py", line 258, in __len__ self._fetch_all() File "/opt/netbox/venv/lib/python3.7/site-packages/cacheops/query.py", line 323, in _fetch_all return self._no_monkey._fetch_all(self) File "/opt/netbox/venv/lib/python3.7/site-packages/django/db/models/query.py", line 1263, in _fetch_all self._prefetch_related_objects() File "/opt/netbox/venv/lib/python3.7/site-packages/django/db/models/query.py", line 782, in _prefetch_related_objects prefetch_related_objects(self._result_cache, *self._prefetch_related_lookups) File "/opt/netbox/venv/lib/python3.7/site-packages/django/db/models/query.py", line 1648, in prefetch_related_objects "prefetch_related()." % lookup.prefetch_through) Exception Type: ValueError at /dcim/inventory-items/ Exception Value: 'manufacturer__name' does not resolve to an item that supports prefetching - this is an invalid parameter to prefetch_related(). ```
Author
Owner

@hoalex commented on GitHub (May 13, 2020):

For me, this error occurs immediately upon clicking on the "Inventory Items" link in the navbar.
I cleared all user preferences (which should also clear the table column configuration) and restarted netbox-rq and netbox. The problem is still the same.

I confirm that my stacktrace looks like the one posted by @matte4711 above.

@hoalex commented on GitHub (May 13, 2020): For me, this error occurs immediately upon clicking on the "Inventory Items" link in the navbar. I cleared all user preferences (which should also clear the table column configuration) and restarted netbox-rq and netbox. The problem is still the same. I confirm that my stacktrace looks like the one posted by @matte4711 above.
Author
Owner

@DanSheps commented on GitHub (May 13, 2020):

Steps to reproduce:

  1. Create a device
  2. Create a inventory item with a manufacturer
  3. Navigate to the "Inventory Items" list view

With manufacturer blank, there is no issue

@DanSheps commented on GitHub (May 13, 2020): ### Steps to reproduce: 1. Create a device 2. Create a inventory item **with** a manufacturer 3. Navigate to the "Inventory Items" list view With manufacturer blank, there is no issue
Author
Owner

@hoalex commented on GitHub (May 13, 2020):

You're right! I removed the manufacturer from my inventory items, afterwards the "Inventory items" list view loaded just fine.

@hoalex commented on GitHub (May 13, 2020): You're right! I removed the manufacturer from my inventory items, afterwards the "Inventory items" list view loaded just fine.
Author
Owner

@DanSheps commented on GitHub (May 13, 2020):

Root cause:

manufacturer = tables.Column(
    accessor=Accessor('manufacturer.name')
)

Should be

manufacturer = tables.Column(
    accessor=Accessor('manufacturer__name')
)

as per the docs for django_tables2.

Oddly enough, the tables.LinkColumn is not affected by this when Accessor() is passed by args=

@DanSheps commented on GitHub (May 13, 2020): Root cause: manufacturer = tables.Column( accessor=Accessor('manufacturer.name') ) Should be manufacturer = tables.Column( accessor=Accessor('manufacturer__name') ) as per the docs for django_tables2. Oddly enough, the tables.LinkColumn is not affected by this when Accessor() is passed by args=
Author
Owner

@DanSheps commented on GitHub (May 13, 2020):

You're right! I removed the manufacturer from my inventory items, afterwards the "Inventory items" list view loaded just fine.

Please make sure you are providing complete steps to reproduce in the future. When in doubt, you can always test on https://master.netbox.dev

@DanSheps commented on GitHub (May 13, 2020): > You're right! I removed the manufacturer from my inventory items, afterwards the "Inventory items" list view loaded just fine. Please make sure you are providing complete steps to reproduce in the future. When in doubt, you can always test on https://master.netbox.dev
Author
Owner

@hoalex commented on GitHub (May 13, 2020):

Will do. To be honest, I did not make the mental link between having a specific inventory item configuration, and this error message. I carried over this inventory item configuartion since some versions, and probably only now tried to open the corresponding list view.
Next time, I will try to reproduce it on the demo site first.

@hoalex commented on GitHub (May 13, 2020): Will do. To be honest, I did not make the mental link between having a specific inventory item configuration, and this error message. I carried over this inventory item configuartion since some versions, and probably only now tried to open the corresponding list view. Next time, I will try to reproduce it on the demo site first.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/netbox#3682