mirror of
https://github.com/django/django.git
synced 2024-12-23 01:25:58 +00:00
Fixed #32833 -- Fixed ContentTypeManager.get_for_models() crash when using in migrations.
Co-authored-by: Heraldo Lucena <23155511+HMaker@users.noreply.github.com>
This commit is contained in:
parent
d3579ca112
commit
84206607d6
@ -89,7 +89,9 @@ class ContentTypeManager(models.Manager):
|
|||||||
)
|
)
|
||||||
cts = self.filter(condition)
|
cts = self.filter(condition)
|
||||||
for ct in cts:
|
for ct in cts:
|
||||||
opts_models = needed_opts.pop(ct.model_class()._meta, [])
|
opts_models = needed_opts.pop(
|
||||||
|
ct._meta.apps.get_model(ct.app_label, ct.model)._meta, []
|
||||||
|
)
|
||||||
for model in opts_models:
|
for model in opts_models:
|
||||||
results[model] = ct
|
results[model] = ct
|
||||||
self._add_to_cache(self.db, ct)
|
self._add_to_cache(self.db, ct)
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
|
from django.apps import apps
|
||||||
from django.contrib.contenttypes.models import ContentType, ContentTypeManager
|
from django.contrib.contenttypes.models import ContentType, ContentTypeManager
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
from django.db.migrations.state import ProjectState
|
||||||
from django.test import TestCase, override_settings
|
from django.test import TestCase, override_settings
|
||||||
from django.test.utils import isolate_apps
|
from django.test.utils import isolate_apps
|
||||||
|
|
||||||
@ -90,6 +92,14 @@ class ContentTypesTests(TestCase):
|
|||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def test_get_for_models_migrations(self):
|
||||||
|
state = ProjectState.from_apps(apps.get_app_config("contenttypes"))
|
||||||
|
ContentType = state.apps.get_model("contenttypes", "ContentType")
|
||||||
|
cts = ContentType.objects.get_for_models(ContentType)
|
||||||
|
self.assertEqual(
|
||||||
|
cts, {ContentType: ContentType.objects.get_for_model(ContentType)}
|
||||||
|
)
|
||||||
|
|
||||||
def test_get_for_models_full_cache(self):
|
def test_get_for_models_full_cache(self):
|
||||||
# Full cache
|
# Full cache
|
||||||
ContentType.objects.get_for_model(ContentType)
|
ContentType.objects.get_for_model(ContentType)
|
||||||
|
Loading…
Reference in New Issue
Block a user