Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

[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
  • Loading branch information...
commit 6be2d903f328421e11a0da3c3321d15ceaeb1656 1 parent 2c6e3b3
Russell Keith-Magee freakboy3742 authored
5 django/contrib/contenttypes/generic.py
View
@@ -193,9 +193,9 @@ def __get__(self, instance, instance_type=None):
rel_model = self.field.rel.to
superclass = rel_model._default_manager.__class__
RelatedManager = create_generic_related_manager(superclass)
-
+
qn = connection.ops.quote_name
-
+
manager = RelatedManager(
model = rel_model,
instance = instance,
@@ -285,6 +285,7 @@ def __init__(self, to, related_name=None, limit_choices_to=None, symmetrical=Tru
self.limit_choices_to = limit_choices_to or {}
self.symmetrical = symmetrical
self.multiple = True
+ self.through = None
class BaseGenericInlineFormSet(BaseModelFormSet):
"""
5 django/db/backends/__init__.py
View
@@ -440,7 +440,10 @@ def sequence_list(self):
break # Only one AutoField is allowed per model, so don't bother continuing.
for f in model._meta.local_many_to_many:
- sequence_list.append({'table': f.m2m_db_table(), 'column': None})
+ # 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 tests/regressiontests/m2m_through_regress/models.py
View
@@ -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 @@ def __unicode__(self):
>>> 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)
+
"""}
Please sign in to comment.
Something went wrong with that request. Please try again.