Commits

Andrew Godwin committed 1ad15ec

Fix abstract model introspection

Comments (0)

Files changed (2)

south/management/commands/startmigration.py

                 print self.usage_str
                 return
             
-            # Good! Get new things.
             new = dict([
                 (model_key(model), prep_for_freeze(model))
                 for model in models.get_models(app_models_module)
-                if (not getattr(model._meta, "proxy", False) and getattr(model._meta, "managed", True))
+                if (
+                    not getattr(model._meta, "proxy", False) and \
+                    getattr(model._meta, "managed", True) and \
+                    not getattr(model._meta, "abstract", False)
+                )
             ])
             # And filter other apps out of the old
             old = dict([

south/modelsinspector.py

     # Go through all bases (that are themselves models, but not Model)
     for base in model.__bases__:
         if base != models.Model and issubclass(base, models.Model):
-            # Looks like we need their fields, Ma.
-            inherited_fields.update(get_model_fields(base))
+            if not base._meta.abstract:
+                # Looks like we need their fields, Ma.
+                inherited_fields.update(get_model_fields(base))
     
     # Now, ask the parser to have a look at this model too.
     try:
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.