2016-06-01 6 views
0

このモデルのINSERT/UPDATEがあるたびに、 'personprofile'がその日のより多くの日の作業にコミットされていないことを確認したいのですが? 「コミット」でDjangoモデル - 同じモデルの他のインスタンスに基づいて検証する方法は?

は、私が唯一それが終わっています後にアップデートが、あれば続けたい意味、同じpersonprofileと同じdatePersonRequirementのすべてのインスタンス上proportion_of_day_requiredの合計が1.0以下です。

class PersonRequirement(models.Model): 
    ''' 
    Joins a person to a Subproject on a given 
    day and nominates how much of that day 
    they are required for 
    ''' 
    subproject = models.ForeignKey(SubProject, on_delete=models.CASCADE) 
    personprofile = models.ForeignKey(PersonProfile, on_delete=models.CASCADE) 
    date = models.DateField() 
    proportion_of_day_required = models.DecimalField(max_digits=3, decimal_places=2) 
私がモデルに保存する方法を見ていた

が、私は同じモデルのインスタンスを更新/挿入しようとしたときにOKになり、同じモデルの他のインスタンスを読み取ろうとするかどうかわかりませんでしたか?

多分私が見落とした方が良いでしょうか?

+0

あなたはどういう意味ですか?その日にさらに日の仕事をすることを約束しましたか? –

+0

@ MaximeB:ご回答いただきありがとうございます。私はそれが明確になることを望む質問に段落を追加しました。 – glaucon

答えて

0

このカスタムカスタムメソッドを使用してください。

+0

ご回答いただきありがとうございます。同じモデルの他のインスタンスを取得しようとしたときにロックの問題が発生する可能性がある場合は、それを話すことができることを期待していました。 – glaucon

+0

説明のための問題は発生しません –

0

saveメソッドをモデルからオーバーライドして、保存が要件を満たしているかどうかを確認し、そうでない場合は拒否する必要があります。

並行変更については、別の発生時にバージョンニーニングと拒否を使用して楽観的ロック(this thread参照)を実装する必要があります。

希望しました。

関連する問題