﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
8053	m2ms with intermediaries break manage.py reset	Dougal Sutherland	nobody	"Using the new intermediaries on many-to-many models breaks the functionality of manage.py reset for me.

More specifically, if I create a project ""testing"" and an application ""tests"", and put the following models in:

{{{
class Band(models.Model):
    name = models.CharField(max_length=100)

class Musician(models.Model):
    name = models.CharField(max_length=100)
    bands = models.ManyToManyField(Band, through='Membership')

class Membership(models.Model):
    band = models.ForeignKey(Band)
    musician = models.ForeignKey(Musician)
    join_date = models.DateField()
}}}


after syncdb'ing, if I then try ""manage.py reset tests"", I get an error message. Looking at ""manage.py sqlclear tests"", I get the following output:

{{{
BEGIN;
DROP TABLE ""tests_membership"";
DROP TABLE ""tests_membership"";
DROP TABLE ""tests_musician"";
DROP TABLE ""tests_band"";
COMMIT;
}}}


This duplication comes from django.core.management.sql.sql_delete, because said function outputs the drop statement for all app models and then for all many-to-many tables. The fix is simple: switch the skip-this-relation condition from checking if the relation is a generic relation to checking the new .creates_table attribute. A patch which does this is attached."		closed	Core (Other)	dev		fixed			Unreviewed	1	0	0	0	0	0
