#31249 closed Bug (duplicate)
select_for_update() with 'of' crashes with models from multi-level inheritance.
Reported by: | Abhijeet Viswa | Owned by: | Abhijeet Viswa |
---|---|---|---|
Component: | Database layer (models, ORM) | Version: | 2.2 |
Severity: | Normal | Keywords: | select_for_update mti |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
Consider the following models:
class A(models.Model): field1 = models.IntegerField() class B(A): field2 = models.IntegerField() class C(B): field_c = models.IntegerField()
queryset = C.objects.all().select_for_update(of=('b_ptr', 'b_ptr__a_ptr'))
The above queryset crashes with the following crashlog:
Traceback (most recent call last): File "/home/abhijeet/git-repos/django/django/core/management/base.py", line 328, in run_from_argv self.execute(*args, **cmd_options) File "/home/abhijeet/git-repos/django/django/core/management/base.py", line 369, in execute output = self.handle(*args, **options) File "/home/abhijeet/django_contrib/selectforupdate/management/commands/debug.py", line 12, in handle print(queryset.query) File "/home/abhijeet/git-repos/django/django/db/models/sql/query.py", line 257, in __str__ sql, params = self.sql_with_params() File "/home/abhijeet/git-repos/django/django/db/models/sql/query.py", line 265, in sql_with_params return self.get_compiler(DEFAULT_DB_ALIAS).as_sql() File "/home/abhijeet/git-repos/django/django/db/models/sql/compiler.py", line 555, in as_sql of=self.get_select_for_update_of_arguments(), File "/home/abhijeet/git-repos/django/django/db/models/sql/compiler.py", line 1036, in get_select_for_update_of_arguments select_index = klass_info['select_fields'][0] IndexError: list index out of range
Change History (3)
comment:1 by , 5 years ago
follow-up: 3 comment:2 by , 5 years ago
Resolution: | → duplicate |
---|---|
Status: | assigned → closed |
Summary: | Multilevel Inherited models crashes with select_for_update 'of' → select_for_update() with 'of' crashes with models from multi-level inheritance. |
I think we can treat this ticket as a duplicate of #31246 because both are related with using models from model inheritance in of
argument of select_for_update()
.
comment:3 by , 5 years ago
Replying to felixxm:
I think we can treat this ticket as a duplicate of #31246 because both are related with using models from model inheritance in
of
argument ofselect_for_update()
.
Sounds good. I wasn't sure if I should include this bug in #31246. I thought it would be best to leave it as a separate ticket.
My PR.
The PR adds a testcase which will fail since it expects #31246 to have been fixed.