﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
31249	select_for_update() with 'of' crashes with models from multi-level inheritance.	Abhijeet Viswa	Abhijeet Viswa	"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
}}}
"	Bug	closed	Database layer (models, ORM)	2.2	Normal	duplicate	select_for_update mti		Unreviewed	0	0	0	0	0	0
