Django: разница между save () и create () с точки зрения транзакции

Метод create () в Django создает экземпляр модели, затем вызывает save (), который, как говорят, запускает фиксацию. Так что разницы в запуске транзакции быть не должно. s совершить.

Но на самом деле, выполняя метод, который создает группу экземпляров модели с помощью create () в Postgresql, я получаю прерывание транзакции, команды игнорируются до конца транзакции , исключение. Метод отлично работает с нетранзакционными бэкэндами БД. Кроме того, когда я заменяю create () на:

m = Model(attr1=..., attr2=...)
m.save()

, он отлично работает и на Postgresql.

Есть ли разница между использованием save () и create () в смысле транзакций?

edit: create () также устанавливает self._for_write = True перед вызовом save (), но я не смог отследить его, чтобы увидеть, имеет ли это какой-либо эффект о поведении транзакции.

редактировать: пример кода можно найти здесь .

13
задан omat 18 November 2010 в 16:28
поделиться