データベースからdjangoオブジェクトの状態を更新することは可能ですか?私はおおよそ次と同等の動作を意味します:
new_self = self.__class__.objects.get(pk=self.pk)
for each field of the record:
setattr(self, field, getattr(new_self, field))
更新:トラッカーで再オープン/不変の戦争が見つかりました:http ://code.djangoproject.com/ticket/901 。それでも、メンテナがこれを好まない理由がわかりません。
これは不要な関数のようです。データベースからオブジェクトを再検索することはすでに可能です。
—
Stephan
Djangoモデルオブジェクトはプロキシであるため、適切ではありません。同じテーブル行を2つのオブジェクトに取得する場合-x1 = X.objects.get(id = 1); x2 = X.objects.get(id = 1)、等しいとテストされますが、それらは異なるオブジェクトであり、状態は共有されません。両方を個別に変更して保存することができます。最後に保存されたものがデータベースの行の状態を決定します。したがって、単純な割り当て-x1 = X.objects.get(id = 1)でリロードするのが正しいです。reloadメソッドを使用すると、多くの人がx1.f = 'new value';と誤って推測することになります。(x1.f == x2.f)はTrueです。
—
ポールウィップ2014
commmit
。それが完了したら、次のSQLトランザクションがコミットするのを待つ必要があります。なぜそれをするのですか?次の取引をどのくらい待ちますか?