У меня есть скрипт импорта, который запускает серию команд для передачи данных из одной БД Postgres в другую, обе из которых работают с одной и той же кодовой базой Django. По большей части он использует ./manage.py loaddata для копирования, но некоторые объекты требуют дополнительной обработки, и я использую метод objects.create () Django в пользовательском сценарии для копирования данных. При этом я указываю идентификатор, т.е.
MyObject.objects.create(id = 2, title = 'foo')
Как только скрипт завершен, я замечаю, что Postgres SEQUENCE неверен в таблицах, где я делал objects.create (). То есть до импорта было 50, а после 50 еще 50, хотя в таблице теперь 150 объектов. Это, конечно, приводит к ошибкам при создании новых объектов, поскольку он пытается использовать идентификатор, который уже существует (во всех этих таблицах идентификатор - это просто поле автоинкремента ванили). Однако таблицы, которые были заполнены с помощью ./manage.py loaddata, выглядят хорошо.
Я знаю, что могу вручную сбросить эти таблицы с помощью Django ./manage.py sqlsequenreset, но мне любопытно, почему последовательность, кажется, выходит из строя в первую очередь. Разве objects.create () не увеличивает его? Я пропускаю что-то очевидное?