Anonymous avatar Anonymous committed 08b1800

Fix #120: Don't create explicit through models for M2Ms.

Comments (0)

Files changed (1)

south/management/commands/startmigration.py

             
             # ManyToMany fields need special attention.
             if isinstance(field, models.ManyToManyField):
-                # Add a stub model for each side
-                stub_models[model] = None
-                stub_models[field.rel.to] = None
-                # And a field defn, that's actually a table creation
-                forwards += CREATE_M2MFIELD_SNIPPET % (
-                    model._meta.object_name,
-                    field.name,
-                    field.m2m_db_table(),
-                    field.m2m_column_name()[:-3], # strip off the '_id' at the end
-                    model._meta.object_name,
-                    field.m2m_reverse_name()[:-3], # strip off the '_id' at the ned
-                    field.rel.to._meta.object_name
+                if not field.rel.through: # Bug #120
+                    # Add a stub model for each side
+                    stub_models[model] = None
+                    stub_models[field.rel.to] = None
+                    # And a field defn, that's actually a table creation
+                    forwards += CREATE_M2MFIELD_SNIPPET % (
+                        model._meta.object_name,
+                        field.name,
+                        field.m2m_db_table(),
+                        field.m2m_column_name()[:-3], # strip off the '_id' at the end
+                        model._meta.object_name,
+                        field.m2m_reverse_name()[:-3], # strip off the '_id' at the ned
+                        field.rel.to._meta.object_name
+                        )
+                    backwards += DELETE_M2MFIELD_SNIPPET % (
+                        model._meta.object_name,
+                        field.name,
+                        field.m2m_db_table()
                     )
-                backwards += DELETE_M2MFIELD_SNIPPET % (
-                    model._meta.object_name,
-                    field.name,
-                    field.m2m_db_table()
-                )
                 continue
             
             # Add any dependencies
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.