with transaction.atomic():
# Create and save some models here
try:
model_instance.save()
except IntegrityError:
raise SomeCustomError()
兩個問題:
1)將這項工作作爲預期並回滾任何先前保存的模型,因爲沒有什麼是除了異常處理程序完成再提高一個自定義錯誤?
2)從代碼風格的角度來看,在這種情況下,在try
塊內不使用嵌套事務是否有意義? (也就是說,try語句塊中的代碼只有一條線,沒有在事務中持續別的意圖,沒有寫入異常處理程序內的數據庫等)
這對這種情況有意義。有什麼用'得到()'查詢中的東西,實際上是扔了一個數據庫錯誤取代了線? – Alex3917
@ Alex3917:我已經更新了你的例子,我的答案更重要。在這個例子中,真正的問題被一個非數據庫錯誤所掩蓋。 –