Skip to content

Commit 17d33e3

Browse files
committed
Skip non sequence pks in reset
1 parent d6fdc1f commit 17d33e3

File tree

1 file changed

+20
-5
lines changed

1 file changed

+20
-5
lines changed

dbdiff/test.py

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"""Convenience test mixin."""
22
from django.core.management import call_command
3-
from django.db import connection
3+
from django.db import connection, models
44

55
from .fixture import Fixture
66

@@ -46,15 +46,30 @@ def test_db_import(self):
4646

4747
for model in self.dbdiff_models:
4848
if connection.vendor == 'postgresql':
49+
pk_field = None
50+
for field in model._meta.get_fields():
51+
if getattr(field, 'primary_key', False):
52+
pk_field = field
53+
break
54+
55+
if not isinstance(pk_field, models.AutoField):
56+
continue
57+
58+
if not pk_field.db_column:
59+
continue
60+
4961
reset = """
5062
SELECT
5163
setval(
52-
pg_get_serial_sequence('%s', 'id'),
53-
coalesce(max(id),0) + 1,
64+
pg_get_serial_sequence('%(table)s', '%(column)s'),
65+
coalesce(max(%(column)s),0) + 1,
5466
false
5567
)
56-
FROM %s
57-
""" % (model._meta.db_table, model._meta.db_table)
68+
FROM %(table)s
69+
""" % dict(
70+
table=model._meta.db_table,
71+
column=pk_field.db_column,
72+
)
5873
else:
5974
raise NotImplemented()
6075
connection.cursor().execute(reset)

0 commit comments

Comments
 (0)