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