2016-03-18 9 views
1

例えば、私がモデルを持っている:dbオブジェクトのスレッドを安全にdjangoに変更するには?

class Model1(models.Model): 
    is_free = models.BooleanField(default=True) 
    rel_object = models.ForeignKey(Model2, null=True, default=None) 

「自由」として設定されているいくつかのオブジェクトがあります。

それを行うにはどのように
model1 = Model1.objects.filter(is_free=True).first() 
model1.is_free = False 
model2.rel_object = model2 
model2.save() 

:私は最初の1を取得し、「自由でない」スレッドセーフ(私は他のスレッドが同じ瞬間にこのオブジェクトを変更できないことを保証する必要があります)にそれを設定したいですか?

+0

あなたは、データベースに同じ行を表す複数のインスタンスがあると言っていますか?または、行ごとに複数のインスタンスがあり、最初のもの(「最初のもの」は何を意味しますか)を「自由ではない」に変更することはできませんか? –

答えて

1

select_for_updateに興味があるかもしれません。これにより、トランザクションがコミットされるまで行をロックすることができます。

関連する問題