2012-01-05 7 views
1

マスター外部キーが更新されると、Djangoは自動的に子レコードを更新しますか?無効にすることはできますか?マスター外部キーが更新されると、Djangoは自動的に子レコードを更新しますか?

私はon.delete関数を見ることができますが、Djangoドキュメントではon.update関数を見ることはできません。

/vfclistsGUY

+1

この場合、更新が必要な子レコードのどの部分が表示されますか?あなたはより具体的な例を挙げることができますか?(ポイントは、子どもが更新する必要があるかどうか分かりません) – second

+0

@secondマスターレコードが子レコードに直接リンクしていなくても、マスターキーが変更されます。下の回答から、Djangoはそれをサポートしていないようです。 – vfclists

+0

マスターキーはなぜ変わるのですか?それは決して起こらないはずです。 –

答えて

1

あなたがそれを指示しない限りDjangoはまったく子供に触れていません。 DELETE CASCADEの場合でも、これはDjangoではなく、データベースレベルでの強制です。それらに変更があります場合

あなたが主な目的のフォームと一緒に子供のためのインラインフォームセットを使用している場合(または管理者にインラインを使用して...同じこと)、そしてDjangoは、同様子供を更新します。そうでなければ、Djangoは何もしません。

保存時に子を更新する必要がある場合は、子どもに行う必要のあることを行うためにモデルのsaveメソッドをオーバーライドするか、post_save信号を使用する必要があります。

+1

データベースの制約にかかわらず、DjangoがPythonレベルでdeleteカスケード*を実行する点を除いて、これは正しいです。 –

関連する問題