Метод create() в Django создает экземпляр модели, а затем вызывает save(), который, как говорят, вызывает фиксацию. Таким образом, не должно быть никакой разницы в инициировании транзакционного фиксации.
Но на самом деле, выполняя метод, который создает кучу экземпляров модели, используя create() в Postgresql, я получаю исключение transaction aborted, commands ignored until end of transaction
. Метод отлично работает с не-транзакционными базами данных. Кроме того, когда я заменяю create() s на:
m = Model(attr1=..., attr2=...)
m.save()
он тоже работает на Postgresql.
Есть ли разница между использованием save()
и create()
в смысле транзакций?
edit: create() также устанавливает self._for_write = True
перед вызовом save(), но я не смог его отслеживать, чтобы увидеть, влияет ли это на поведение транзакции.
изменить: пример кода здесь.