Commit 6be2d903 authored by Russell Keith-Magee's avatar Russell Keith-Magee
Browse files

[1.0.X] Fixed #9804 -- Corrected the introspection of sequence names. This was...

[1.0.X] Fixed #9804 -- Corrected the introspection of sequence names. This was causing problems when flushing tables that had many-to-many relations through an inherited table. Thanks to jdimov for the report.

Merge of r10552 from trunk.


git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.0.X@10553 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent 2c6e3b30
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -285,6 +285,7 @@ class GenericRel(ManyToManyRel):
        self.limit_choices_to = limit_choices_to or {}
        self.symmetrical = symmetrical
        self.multiple = True
        self.through = None

class BaseGenericInlineFormSet(BaseModelFormSet):
    """
+4 −1
Original line number Diff line number Diff line
@@ -440,6 +440,9 @@ class BaseDatabaseIntrospection(object):
                        break # Only one AutoField is allowed per model, so don't bother continuing.

                for f in model._meta.local_many_to_many:
                    # If this is an m2m using an intermediate table,
                    # we don't need to reset the sequence.
                    if f.rel.through is None:
                        sequence_list.append({'table': f.m2m_db_table(), 'column': None})

        return sequence_list
+20 −0
Original line number Diff line number Diff line
@@ -35,6 +35,22 @@ class Group(models.Model):
    def __unicode__(self):
        return self.name

# A set of models that use an non-abstract inherited model as the 'through' model.
class A(models.Model):
    a_text = models.CharField(max_length=20)

class ThroughBase(models.Model):
    a = models.ForeignKey(A)
    b = models.ForeignKey('B')

class Through(ThroughBase):
    extra = models.CharField(max_length=20)

class B(models.Model):
    b_text = models.CharField(max_length=20)
    a_list = models.ManyToManyField(A, through=Through)


__test__ = {'API_TESTS':"""
# Create some dummy data
>>> bob = Person.objects.create(name='Bob')
@@ -176,4 +192,8 @@ doing a join.
>>> bob.group_set.filter(membership__price=50)
[<Group: Roll>]

## Regression test for #9804
# Flush the database, just to make sure we can.
>>> management.call_command('flush', verbosity=0, interactive=False)

"""}