13

AおよびBが django モデルであると仮定すると、次Aの外部キー フィールドがありますB

a = A()
b = B()
a.my_b = b
b.save()
a.save()

驚いたことに、外部キー フィールドにa保存されます。保存の前または後にチェックすると、インスタンスを参照しますが、django は外部キー id 自体を評価するようです。複雑なシステムやフローでは、コマンドの順序を変更するのが難しい場合があるため、割り当てる前に単純に保存するのは現実的ではありません...nullmy_ba.my_bba.my_b = ba.save()ba

保存コマンドの間に信じられないほどのステートメントを追加するa.my_b=a.my_bと機能しますが、私には恐ろしい回避策のようです。

モデルインスタンスの保存時に外部キーを再評価するようにdjangoを設定する方法はありますか?

この問題を解決する別のアプローチはありますか?

4

1 に答える 1

7

この問題を説明する Django チケット#8892があります。

その間、動作を変更する構成設定はありません。保存操作と割り当て操作の順序を変更するか、追加の割り当てを行う必要があります。

于 2012-11-06T10:47:03.643 に答える