Issue:
Using the "show counts" feature within the RentalItemsFilter on the
Customer admin page to display counts of devices (Rental Items) associated
with each customer through contracts triggers an exception.
Steps to Reproduce:
Load fixtures from fixture.json
Go to the Django admin dashboard and navigate to the Customer model
section.
Click on "Show counts".
{{{
Traceback:
Request Method: GET
Request URL: http://127.0.0.1:8000/admin/demo/customer/?_facets=True
Django Version: 5.0.2
Python Version: 3.11.7
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'demo']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Template error:
In template /django_bug_report/.venv/lib/python3.11/site-
packages/django/contrib/admin/templates/admin/change_list.html, error at
line 87
no such column: demo_rentalitem.id
77 : <h2>{% translate 'Filter' %}</h2>
78 : {% if cl.is_facets_optional or cl.has_active_filters
%}<div id="changelist-filter-extra-actions">
79 : {% if cl.is_facets_optional %}<h3>
80 : {% if cl.add_facets %}<a href="{{
cl.remove_facet_link }}" class="hidelink">{% translate "Hide counts"
%}</a>
81 : {% else %}<a href="{{ cl.add_facet_link }}"
class="viewlink">{% translate "Show counts" %}</a>{% endif %}
82 : </h3>{% endif %}
83 : {% if cl.has_active_filters %}<h3>
84 : <a href="{{ cl.clear_all_filters_qs }}">✖
{% translate "Clear all filters" %}</a>
85 : </h3>{% endif %}
86 : </div>{% endif %}
87 : {% for spec in cl.filter_specs %} {% admin_list_filter
cl spec %} {% endfor %}
88 : </div>
89 : {% endif %}
90 : {% endblock %}
91 : </div>
92 : </div>
93 : {% endblock %}
94 :
Traceback (most recent call last):
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/db/backends/utils.py", line 105, in _execute
return self.cursor.execute(sql, params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/db/backends/sqlite3/base.py", line 329, in execute
return super().execute(query, params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The above exception (no such column: demo_rentalitem.id) was the direct
cause of the following exception:
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/core/handlers/exception.py", line 55, in inner
response = get_response(request)
^^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/core/handlers/base.py", line 220, in _get_response
response = response.render()
^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/template/response.py", line 114, in render
self.content = self.rendered_content
^^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/template/response.py", line 92, in rendered_content
return template.render(context, self._request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/template/backends/django.py", line 61, in render
return self.template.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/template/base.py", line 171, in render
return self._render(context)
^^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/template/base.py", line 163, in _render
return self.nodelist.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/template/base.py", line 1000, in render
return SafeString("".join([node.render_annotated(context) for node in
self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/template/base.py", line 1000, in <listcomp>
return SafeString("".join([node.render_annotated(context) for node in
self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/template/base.py", line 961, in render_annotated
return self.render(context)
^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/template/loader_tags.py", line 159, in render
return compiled_parent._render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/template/base.py", line 163, in _render
return self.nodelist.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/template/base.py", line 1000, in render
return SafeString("".join([node.render_annotated(context) for node in
self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/template/base.py", line 1000, in <listcomp>
return SafeString("".join([node.render_annotated(context) for node in
self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/template/base.py", line 961, in render_annotated
return self.render(context)
^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/template/loader_tags.py", line 159, in render
return compiled_parent._render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/template/base.py", line 163, in _render
return self.nodelist.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/template/base.py", line 1000, in render
return SafeString("".join([node.render_annotated(context) for node in
self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/template/base.py", line 1000, in <listcomp>
return SafeString("".join([node.render_annotated(context) for node in
self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/template/base.py", line 961, in render_annotated
return self.render(context)
^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/template/loader_tags.py", line 65, in render
result = block.nodelist.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/template/base.py", line 1000, in render
return SafeString("".join([node.render_annotated(context) for node in
self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/template/base.py", line 1000, in <listcomp>
return SafeString("".join([node.render_annotated(context) for node in
self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/template/base.py", line 961, in render_annotated
return self.render(context)
^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/template/loader_tags.py", line 65, in render
result = block.nodelist.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/template/base.py", line 1000, in render
return SafeString("".join([node.render_annotated(context) for node in
self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/template/base.py", line 1000, in <listcomp>
return SafeString("".join([node.render_annotated(context) for node in
self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/template/base.py", line 961, in render_annotated
return self.render(context)
^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/template/defaulttags.py", line 326, in render
return nodelist.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/template/base.py", line 1000, in render
return SafeString("".join([node.render_annotated(context) for node in
self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/template/base.py", line 1000, in <listcomp>
return SafeString("".join([node.render_annotated(context) for node in
self]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/template/base.py", line 961, in render_annotated
return self.render(context)
^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/template/defaulttags.py", line 242, in render
nodelist.append(node.render_annotated(context))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/template/base.py", line 961, in render_annotated
return self.render(context)
^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/template/library.py", line 237, in render
output = self.func(*resolved_args, **resolved_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/contrib/admin/templatetags/admin_list.py", line 505, in
admin_list_filter
"choices": list(spec.choices(cl)),
^^^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/contrib/admin/filters.py", line 150, in choices
facet_counts = self.get_facet_queryset(changelist) if add_facets else
None
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/contrib/admin/filters.py", line 87, in get_facet_queryset
return filtered_qs.aggregate(
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/db/models/query.py", line 604, in aggregate
return self.query.chain().get_aggregation(self.db, kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/db/models/sql/query.py", line 615, in get_aggregation
result = compiler.execute_sql(SINGLE)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/db/models/sql/compiler.py", line 1562, in execute_sql
cursor.execute(sql, params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/db/backends/utils.py", line 122, in execute
return super().execute(sql, params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/db/backends/utils.py", line 79, in execute
return self._execute_with_wrappers(
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers
return executor(sql, params, many, context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/db/backends/utils.py", line 100, in _execute
with self.db.wrap_database_errors:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/db/utils.py", line 91, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/db/backends/utils.py", line 105, in _execute
return self.cursor.execute(sql, params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/django_bug_report/.venv/lib/python3.11/site-
packages/django/db/backends/sqlite3/base.py", line 329, in execute
return super().execute(query, params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Exception Type: OperationalError at /admin/demo/customer/
Exception Value: no such column: demo_rentalitem.id
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/35198>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
* Attachment "django_bug_report.zip" added.
Small reproducer
* cc: Thomas Feldmann (added)
--
Ticket URL: <https://code.djangoproject.com/ticket/35198#comment:1>