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