Tôi đang tạo một ứng dụng web Django cho phép người dùng tạo một tập hợp các thay đổi qua một loạt các GET/POST trước khi cam kết chúng vào cơ sở dữ liệu (hoặc hoàn nguyên) với POST cuối cùng . Tôi phải giữ các bản cập nhật được phân lập từ bất kỳ người dùng cơ sở dữ liệu đồng thời cho đến khi họ được xác nhận (đây là một cấu hình front-end), quyết định cam kết sau mỗi POST.Giao dịch mỗi phiên trong Django
Giải pháp ưa thích của tôi là sử dụng giao dịch mỗi phiên. Điều này giữ tất cả các vấn đề của việc ghi nhớ những gì đã thay đổi (và cách nó ảnh hưởng đến các truy vấn tiếp theo), cùng với việc thực hiện cam kết/rollback, trong cơ sở dữ liệu mà nó thuộc về. Khóa bế tắc và khóa kéo dài không phải là một vấn đề, do các ràng buộc bên ngoài chỉ có thể có một người dùng định cấu hình hệ thống tại một thời điểm bất kỳ và chúng hoạt động tốt.
Tuy nhiên, tôi không thể tìm thấy tài liệu về thiết lập ORM của Django để sử dụng loại mô hình giao dịch này. Tôi đã ném cùng một miếng vá khỉ tối thiểu (ew!) Để giải quyết vấn đề, nhưng không thích giải pháp mong manh như vậy. Có ai khác đã làm điều này trước đây không? Tôi đã bỏ lỡ một số tài liệu ở đâu đó?
(phiên bản Mỹ của Django là 1.0.2 cuối cùng, và tôi đang sử dụng một cơ sở dữ liệu Oracle.)
Deadlock và người dùng bước ra cho cà phê không phải là một vấn đề (sẽ có một bộ điều khiển, và bằng cách thiết kế toàn bộ cập nhật được thực hiện dưới một khóa). Đúng nếu tôi sai, nhưng các vật lưu niệm sẽ không thực sự làm việc với ORM, đúng không? –
Vật lưu niệm - làm mẫu thiết kế - hoạt động với mọi thứ. Giao dịch dài hạn, nhiều bước với các khóa tích lũy chậm sẽ dẫn đến bế tắc. Cách duy nhất để tránh bế tắc là có một người dùng. –
ORM của Django cung cấp ánh xạ tự động từ các bảng đến biểu mẫu và ngược lại. Tôi có thể móc điều này lên mẫu Memento không, hoặc tôi có cần ngừng sử dụng tính năng này không? –