Fixed #33234 -- Fixed autodetector crash for proxy models inheriting from non-model class.
Regression in aa4acc164d
.
Thanks Kevin Marsh for the report.
This commit is contained in:
parent
c069ee0b9d
commit
dab48b7482
|
@ -476,6 +476,8 @@ class ProjectState:
|
||||||
|
|
||||||
def _find_concrete_model_from_proxy(self, proxy_models, model_state):
|
def _find_concrete_model_from_proxy(self, proxy_models, model_state):
|
||||||
for base in model_state.bases:
|
for base in model_state.bases:
|
||||||
|
if not (isinstance(base, str) or issubclass(base, models.Model)):
|
||||||
|
continue
|
||||||
base_key = make_model_tuple(base)
|
base_key = make_model_tuple(base)
|
||||||
base_state = proxy_models.get(base_key)
|
base_state = proxy_models.get(base_key)
|
||||||
if not base_state:
|
if not base_state:
|
||||||
|
|
|
@ -1783,6 +1783,29 @@ class AutodetectorTests(TestCase):
|
||||||
self.assertOperationAttributes(changes, "testapp", 0, 0, name="AuthorProxy")
|
self.assertOperationAttributes(changes, "testapp", 0, 0, name="AuthorProxy")
|
||||||
self.assertOperationAttributes(changes, "testapp", 0, 1, name="AuthorProxy", options={})
|
self.assertOperationAttributes(changes, "testapp", 0, 1, name="AuthorProxy", options={})
|
||||||
|
|
||||||
|
def test_proxy_non_model_parent(self):
|
||||||
|
class Mixin:
|
||||||
|
pass
|
||||||
|
|
||||||
|
author_proxy_non_model_parent = ModelState(
|
||||||
|
'testapp',
|
||||||
|
'AuthorProxy',
|
||||||
|
[],
|
||||||
|
{'proxy': True},
|
||||||
|
(Mixin, 'testapp.author'),
|
||||||
|
)
|
||||||
|
changes = self.get_changes(
|
||||||
|
[self.author_empty],
|
||||||
|
[self.author_empty, author_proxy_non_model_parent],
|
||||||
|
)
|
||||||
|
self.assertNumberMigrations(changes, 'testapp', 1)
|
||||||
|
self.assertOperationTypes(changes, 'testapp', 0, ['CreateModel'])
|
||||||
|
self.assertOperationAttributes(
|
||||||
|
changes, 'testapp', 0, 0, name='AuthorProxy',
|
||||||
|
options={'proxy': True, 'indexes': [], 'constraints': []},
|
||||||
|
bases=(Mixin, 'testapp.author'),
|
||||||
|
)
|
||||||
|
|
||||||
def test_proxy_custom_pk(self):
|
def test_proxy_custom_pk(self):
|
||||||
"""
|
"""
|
||||||
#23415 - The autodetector must correctly deal with custom FK on proxy
|
#23415 - The autodetector must correctly deal with custom FK on proxy
|
||||||
|
|
Loading…
Reference in New Issue