私は最終的なPOSTでデータベースにコミットする(または元に戻す)前に一連のGET/POSTで一連の変更を構築できるDjango Webアプリケーションを作成しています。私は、各POSTの後にコミットすることを排除する(これは設定フロントエンドです)確認が行われるまで、同時実行のデータベースユーザーから更新を隔離しておく必要があります。Djangoでのセッション単位のトランザクション
私の好ましい解決策は、セッションごとのトランザクションを使用することです。これにより、変更された内容(それが後続のクエリにどのように影響するか)と、コミット/ロールバックの実装と、それが属するデータベース内のすべての問題が保持されます。デッドロックとロング・ロックは問題ではありません。なぜなら、外部の制約のために、一度に1人のユーザーしかシステムを構成できず、正常に動作しているからです。
しかし、この種のトランザクションモデルを使用するためのDjangoのORMの設定に関するドキュメントは見つかりません。私は問題を解決するために最小の猿パッチ(ew!)を一緒に投げましたが、そのような壊れやすい解決策を嫌います。他の誰もこれを前にしていますか?私はどこかの文書を見逃したことがありますか?
(ジャンゴの私のバージョンは1.0.2決勝で、私は、Oracleデータベースを使用しています。)
デッドロックとコーヒーを飲むユーザーは問題ありません(1台のコントローラがあり、設計上、全体の更新は1つのロックで行われます)。 私が間違っていれば私を訂正してください。しかし、メメントスは実際にORMで働かないでしょうか? –
メメントはデザインパターンとして、すべてのものと機能します。ゆっくりと積み重なるロックを伴う長時間実行の複数ステップトランザクションはデッドロックにつながります。デッドロックを回避する唯一の方法は、単一のユーザーを持つことです。 –
Django ORMは、テーブルからフォームへの自動マッピングを提供します。これをMementoパターンにフックすることはできますか、またはこの機能の使用をやめる必要がありますか? –