私は、このモデルを持っている:スイッチ - ジャンゴ
class Person(models.Model)
id = IntegerField()
place_in_line = IntegerField()
私が欲しい避けるレース条件に、このコードで、私はは同じ2つのPersonオブジェクトを持っているを買う余裕はありません以下のように配置します。
@transaction.atomic
def switch(person1, person2)
place1 = person1.place_in_line
place2 = person2.place_in_line
person1.place_in_line = place2
person2.place_in_line = place1
person1.save()
person2.save()
私はFまたはケース式を使用して試してみましたが、それらはすべて自分自身にではなく、他の任意のフィールドを参照してください...
ありがとうございます。誰でも好奇心旺盛であれば
[unique](https://docs.djangoproject.com/en/1.10/ref/models/fields/#unique)パラメータをフィールドに追加しますか? – Ben
これは私の現在の解決策です。それはアクションを実行しないので十分ではありません...(私はユニークでtransaction.atomicで再試行を使用します) –