標準的な方法は、次のようにこれを処理しないことです。
- あなたのケースで失敗する確率は0に近いです;
- 障害の重大度は非常に低いです。
何らかの理由で、問題が発生しないことを確認する必要がある場合は、自分で行ってください。
イベントのシーケンスを詳細に分析していませんが、SERIALIZABLE分離レベルを使用しても実際には役に立たないと思います。それは、IntegrityError
を引き起こすだけです。 (またはDatabaseError
)別の場所で育てられます。
Model._perform_unique_checks
をオーバーライドする 悪い考えのように聞こえますが、可能であればモンキーパッチを使用しない方がよいでしょう(ここでは 可能)。
起こりそうもないエラーを防ぐためにテーブルロックを使用することに関しては...まあ、私は大ファンではないので、それもお勧めできません。
同様の質問に対する良い答えは次のとおりです: https://stackoverflow.com/a/3523439/176186 -IntegrityError
をキャッチすることに同意します 再試行は、おそらく問題に対処するための最も簡単な方法です。
編集:私はこれを見つけました: Symfony2-フォーム送信後に一意の制約エラーから回復する方法は? @pidの答えに同意します。