Tôi đang cố gắng tạo chế độ xem nơi tôi lưu đối tượng nhưng tôi muốn hoàn tác lưu nếu một số ngoại lệ được nêu ra. Đây là những gì tôi đã thử:Django - Rollback lưu với giao dịch nguyên tử
class MyView(View):
@transation.atomic
def post(self, request, *args, **kwargs):
try:
some_object = SomeModel(...)
some_object.save()
if something:
raise exception.NotAcceptable()
# When the workflow comes into this condition, I think the previous save should be undome
# Whant am I missing?
except exception.NotAcceptable, e:
# do something
Tôi đang làm gì sai? ngay cả khi ngoại lệ được nâng lên some_object
vẫn còn trong DataBase.
Chế độ xem này dành cho API, vì vậy tôi nghĩ rằng tôi cần xử lý bất kỳ lỗi nào có thể để đưa ra phản hồi json propper. Không có cách nào để làm điều này với trang trí nguyên tử? – Gocht
Không phải với trang trí imho, bởi vì nó xử lý giao dịch bên ngoài chức năng của bạn. Ví dụ hay với trình quản lý ngữ cảnh! – jpic
Bạn phải có một khối nguyên tử bên trong thử .. trừ khối như trong câu trả lời. Bạn cũng có thể sử dụng trình trang trí nguyên tử trên chế độ xem nếu bạn muốn. – Alasdair