Fixed #29559 -- Fixed TransactionTestCase.reset_sequences for auto-created m2m through models.
This commit is contained in:
parent
4d98b9d729
commit
a07a49ee32
|
@ -127,7 +127,7 @@ class BaseDatabaseIntrospection:
|
|||
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.remote_field.through is None:
|
||||
if f.remote_field.through._meta.auto_created:
|
||||
sequence = self.get_sequences(cursor, f.m2m_db_table())
|
||||
sequence_list.extend(sequence or [{'table': f.m2m_db_table(), 'column': None}])
|
||||
return sequence_list
|
||||
|
|
|
@ -4,6 +4,7 @@ from django.db import models
|
|||
class Person(models.Model):
|
||||
first_name = models.CharField(max_length=20)
|
||||
last_name = models.CharField(max_length=20)
|
||||
friends = models.ManyToManyField('self')
|
||||
|
||||
|
||||
# A set of models that use a non-abstract inherited 'through' model.
|
||||
|
|
|
@ -342,6 +342,9 @@ class AutoIncrementResetTest(TransactionTestCase):
|
|||
# Regular model
|
||||
p = Person.objects.create(first_name='Jack', last_name='Smith')
|
||||
self.assertEqual(p.pk, 1)
|
||||
# Auto-created many-to-many through model
|
||||
p.friends.add(Person.objects.create(first_name='Jacky', last_name='Smith'))
|
||||
self.assertEqual(p.friends.through.objects.first().pk, 1)
|
||||
# Many-to-many through model
|
||||
b = B.objects.create()
|
||||
t = Through.objects.create(person=p, b=b)
|
||||
|
|
Loading…
Reference in New Issue