#35056 closed Bug (fixed)
admin.E013 on ManyToManyField with related_name crashes.
Reported by: | Thomas Feldmann | Owned by: | Mariusz Felisiak |
---|---|---|---|
Component: | contrib.admin | Version: | 5.0 |
Severity: | Release blocker | Keywords: | |
Cc: | Hrushikesh Vaidya | Triage Stage: | Accepted |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
I'm having problems updating my Django 4.2 project to Django 5.
Trying manage.py runserver
raises an exception when performing system checks:
Exception in thread django-main-thread: Traceback (most recent call last): File "/opt/homebrew/Cellar/python@3.11/3.11.6_1/Frameworks/Python.framework/Versions/3.11/lib/python3.11/threading.py", line 1045, in _bootstrap_inner self.run() File "/opt/homebrew/Cellar/python@3.11/3.11.6_1/Frameworks/Python.framework/Versions/3.11/lib/python3.11/threading.py", line 982, in run self._target(*self._args, **self._kwargs) File "/Users/tf/work/mama2/mama/.venv/lib/python3.11/site-packages/django/utils/autoreload.py", line 64, in wrapper fn(*args, **kwargs) File "/Users/tf/work/mama2/mama/.venv/lib/python3.11/site-packages/django/core/management/commands/runserver.py", line 133, in inner_run self.check(display_num_errors=True) File "/Users/tf/work/mama2/mama/.venv/lib/python3.11/site-packages/django/core/management/base.py", line 485, in check all_issues = checks.run_checks( ^^^^^^^^^^^^^^^^^^ File "/Users/tf/work/mama2/mama/.venv/lib/python3.11/site-packages/django/core/checks/registry.py", line 88, in run_checks new_errors = check(app_configs=app_configs, databases=databases) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/tf/work/mama2/mama/.venv/lib/python3.11/site-packages/django/contrib/admin/checks.py", line 52, in check_admin_app errors.extend(site.check(app_configs)) ^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/tf/work/mama2/mama/.venv/lib/python3.11/site-packages/django/contrib/admin/sites.py", line 89, in check errors.extend(modeladmin.check()) ^^^^^^^^^^^^^^^^^^ File "/Users/tf/work/mama2/mama/.venv/lib/python3.11/site-packages/django/contrib/admin/options.py", line 148, in check return self.checks_class().check(self, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/tf/work/mama2/mama/.venv/lib/python3.11/site-packages/django/contrib/admin/checks.py", line 806, in check *super().check(admin_obj), ^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/tf/work/mama2/mama/.venv/lib/python3.11/site-packages/django/contrib/admin/checks.py", line 187, in check *self._check_filter_horizontal(admin_obj), ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/tf/work/mama2/mama/.venv/lib/python3.11/site-packages/django/contrib/admin/checks.py", line 515, in _check_filter_horizontal return list( ^^^^^ File "/Users/tf/work/mama2/mama/.venv/lib/python3.11/site-packages/django/contrib/admin/checks.py", line 517, in <genexpr> self._check_filter_item( File "/Users/tf/work/mama2/mama/.venv/lib/python3.11/site-packages/django/contrib/admin/checks.py", line 539, in _check_filter_item elif not field.remote_field.through._meta.auto_created: ^^^^^^^^^^^^^^^^^^^^^^^^^^ AttributeError: 'ManyToManyField' object has no attribute 'through'
The project works fine in Django 4.2.7.
I found this comes from a filter_horizontal field which is a ManyToManyField's related_name.
Attachments (1)
Change History (9)
follow-up: 2 comment:1 by , 12 months ago
comment:2 by , 12 months ago
Replying to Mariusz Felisiak:
Thanks for the report. Can you provide a small project that reproduces the issue?
Sure. Added a small example. While putting this together I realized this also doesn't work in Django 4 but does not raise an exception.
The error message could be a little clearer but I'm not sure whether this is a bug or a feature.
comment:3 by , 12 months ago
Cc: | added |
---|---|
Severity: | Normal → Release blocker |
Summary: | AttributeError: 'ManyToManyField' object has no attribute 'through' → admin.E013 on ManyToManyField with related_name crashes. |
Triage Stage: | Unreviewed → Accepted |
Thanks for the report! ManyToManyField
s with the through
are generally not supported in the admin (#12203) but this should not crash. It seems that ManyToManyRel
is recognized as many_to_many
but it's remote_field
doesn't have through
Regression in 107865780aa44914e21d27fdf4ca269bc61c7f01
follow-up: 5 comment:4 by , 12 months ago
Can i help with this issue? If anyone can give me some advice or reference to other similar issues, I would like to contribute
comment:5 by , 12 months ago
Could this be fixed with a simple hasattr(field.remote_field, 'through')
check before accessing through
?
Thanks for the report. Can you provide a small project that reproduces the issue?