mirror of https://github.com/django/django.git
Fixed #21010 -- Changed ModelState to only copy _meta.local_fields.
This commit is contained in:
parent
533d1ab334
commit
34d52fd32e
|
@ -70,7 +70,7 @@ class ModelState(object):
|
||||||
"""
|
"""
|
||||||
# Deconstruct the fields
|
# Deconstruct the fields
|
||||||
fields = []
|
fields = []
|
||||||
for field in model._meta.fields:
|
for field in model._meta.local_fields:
|
||||||
name, path, args, kwargs = field.deconstruct()
|
name, path, args, kwargs = field.deconstruct()
|
||||||
field_class = import_by_path(path)
|
field_class = import_by_path(path)
|
||||||
fields.append((name, field_class(*args, **kwargs)))
|
fields.append((name, field_class(*args, **kwargs)))
|
||||||
|
|
|
@ -75,3 +75,22 @@ class StateTests(TestCase):
|
||||||
new_app_cache = project_state.render()
|
new_app_cache = project_state.render()
|
||||||
self.assertEqual(new_app_cache.get_model("migrations", "Tag")._meta.get_field_by_name("name")[0].max_length, 100)
|
self.assertEqual(new_app_cache.get_model("migrations", "Tag")._meta.get_field_by_name("name")[0].max_length, 100)
|
||||||
self.assertEqual(new_app_cache.get_model("migrations", "Tag")._meta.get_field_by_name("hidden")[0].null, False)
|
self.assertEqual(new_app_cache.get_model("migrations", "Tag")._meta.get_field_by_name("hidden")[0].null, False)
|
||||||
|
|
||||||
|
def test_render_multiple_inheritance(self):
|
||||||
|
# Use a custom app cache to avoid polluting the global one.
|
||||||
|
new_app_cache = BaseAppCache()
|
||||||
|
|
||||||
|
class Book(models.Model):
|
||||||
|
title = models.CharField(max_length=1000)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
app_label = "migrations"
|
||||||
|
app_cache = new_app_cache
|
||||||
|
|
||||||
|
class Novel(Book):
|
||||||
|
class Meta:
|
||||||
|
app_label = "migrations"
|
||||||
|
app_cache = new_app_cache
|
||||||
|
|
||||||
|
yet_another_app_cache = BaseAppCache()
|
||||||
|
ModelState.from_model(Novel).render(yet_another_app_cache)
|
||||||
|
|
Loading…
Reference in New Issue