summaryrefslogtreecommitdiff
path: root/django/db/models/sql
diff options
context:
space:
mode:
authorDaniel Hillier <daniel.hillier@gmail.com>2020-08-08 15:17:36 +1000
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2020-08-11 11:55:10 +0200
commit60626162f76f26d32a38d18151700cb041201fb3 (patch)
treecb1b1cfc019734f6048b2e069e3667b11ce9116e /django/db/models/sql
parent0aeb802cf054cb369646c871b53c93a83c1fa58a (diff)
Fixed #31866 -- Fixed locking proxy models in QuerySet.select_for_update(of=()).
Diffstat (limited to 'django/db/models/sql')
-rw-r--r--django/db/models/sql/compiler.py6
1 files changed, 4 insertions, 2 deletions
diff --git a/django/db/models/sql/compiler.py b/django/db/models/sql/compiler.py
index 686e75c979..fc7a7aafae 100644
--- a/django/db/models/sql/compiler.py
+++ b/django/db/models/sql/compiler.py
@@ -982,7 +982,8 @@ class SQLCompiler:
the query.
"""
def _get_parent_klass_info(klass_info):
- for parent_model, parent_link in klass_info['model']._meta.parents.items():
+ concrete_model = klass_info['model']._meta.concrete_model
+ for parent_model, parent_link in concrete_model._meta.parents.items():
parent_list = parent_model._meta.get_parent_list()
yield {
'model': parent_model,
@@ -1007,8 +1008,9 @@ class SQLCompiler:
select_fields is filled recursively, so it also contains fields
from the parent models.
"""
+ concrete_model = klass_info['model']._meta.concrete_model
for select_index in klass_info['select_fields']:
- if self.select[select_index][0].target.model == klass_info['model']:
+ if self.select[select_index][0].target.model == concrete_model:
return self.select[select_index][0]
def _get_field_choices():