﻿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
30953	Model Inheritance and select_for_update with 'of'	Abhijeet Viswa	Mariusz Felisiak	"Consider two models A and B with B being a sub model of A. If I have a select and update that looks like this (assume it all happens inside an atomic transaction):


{{{
b = B.objects.filter(pk=1).select_for_update(of=('self'))
b = b[0]  # Evaluate the query
b.some_field_of_b = b.some_field_of_b + 1
b.save()
}}}

This will cause race conditions. The generated SQL will only lock the table of A (the super-model) and not of B. As you can see, the field being updated is of B and not of A. Even though the `SELECT .. FOR UPDATE OF` might block, the queryset returned will not contain the updated data of the table of B because the snapshot will not include the updated data (before a lock is even acquired). 


When the `of` parameter for `select_for_update` is supplied, the tables locked should include those of the sub-models of the `of` fields.

"	Bug	closed	Database layer (models, ORM)	2.1	Release blocker	fixed	select_for_update mti model inheritance	Abhijeet Viswa	Accepted	1	0	0	0	0	0
