Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Fixed #21010 -- Changed ModelState to only copy _meta.local_fields.

  • Loading branch information...
commit 34d52fd32ed6192daa37e3fc1303cc5661130bad 1 parent 533d1ab
@loic loic authored timgraham committed
Showing with 20 additions and 1 deletion.
  1. +1 −1  django/db/migrations/state.py
  2. +19 −0 tests/migrations/test_state.py
View
2  django/db/migrations/state.py
@@ -70,7 +70,7 @@ def from_model(cls, model):
"""
# Deconstruct the fields
fields = []
- for field in model._meta.fields:
+ for field in model._meta.local_fields:
name, path, args, kwargs = field.deconstruct()
field_class = import_by_path(path)
fields.append((name, field_class(*args, **kwargs)))
View
19 tests/migrations/test_state.py
@@ -75,3 +75,22 @@ def test_render(self):
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("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)
Please sign in to comment.
Something went wrong with that request. Please try again.