2010-12-12 3 views
0

クラスインスタンスのcreatorに送信するクラスモデルオブジェクトの変更を書き留めようとしています。Django:クエリが遅れていてインスタンスの作成が遅い

私はクエリが後になるまで評価されませんので、しかし、これは動作しません、2つのオブジェクトをdiffをユーティリティメソッドを作成しました:

goal = Goal.objects.get(pk=goal_id) 
old_obj = goal 

goal.description = "Some new string" 
goal.save() 

これは動作しません、私はその後、反復処理するときので、モデルクラスのフィールドの値は、更新されたバージョンの場合と同じです。

強制的にクエリを評価する方法はありますか?

これには多くの種類のオブジェクトがあります。そのため、値を抽出するハードコーディングは実際には維持できません。

どのような考えですか?

ありがとうございます! :-) Eric

答えて

1

これはクエリが怠け者であるのとは関係ありませんが、Pythonの割り当てのセマンティクスの単純な結果です。行old_obj = goalgoalオブジェクトのコピーを作成せず、同じオブジェクトを指す別の名前としてold_objを割り当てます。これらのオブジェクトのいずれかの属性を変更すると、自動的に他のオブジェクトに変更が反映されます。

これを行う簡単な方法は、別のコピーのためのデータベースを依頼するだけです:彼らは、同じデータベースの行を指していても、

goal = Goal.objects.get(pk=goal_id) 
old_obj = Goal.objects.get(pk=goal_id) 

は今、彼らは、2つの別々のオブジェクトになり、1ウォンへの変更他に影響を与えません。

0
+0

ありがとうダニエル。しかし、私は.get()を使用し、実際には返されたクエリーセットを取得せず、クラスインスタンスを返します。私は混乱していたので、私の投稿のタイトルを更新しました。 –

関連する問題