diff options
| author | Daniel Hillier <daniel.hillier@gmail.com> | 2020-08-08 15:17:36 +1000 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2020-08-11 11:55:10 +0200 |
| commit | 60626162f76f26d32a38d18151700cb041201fb3 (patch) | |
| tree | cb1b1cfc019734f6048b2e069e3667b11ce9116e /django/db/models/sql | |
| parent | 0aeb802cf054cb369646c871b53c93a83c1fa58a (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.py | 6 |
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(): |
