私はこれが一例でもっとも説明されていると思います。1対多の関係で更新をカスケードする方法はありますか?
class GrandParent(models.Model):
pass
class Parent(models.Model):
grandparent = models.ForeignKey(GrandParent, null=True, blank=True, default=None)
class Child(models.Model):
parent = models.ForeignKey(Parent, null=True, blank=True, default=None)
grandparent = models.ForeignKey(GrandParent, null=True, blank=True, default=None)
私たちは3つのクラスを持っています。子は親とGrandParentに外部キーを持ち、ParentはGrandParentに外部キーを持っています。
Django管理領域では、親レコード(P1)をクリックして、その外部キーをGrandParentレコード(GP1)に設定します。
私はこれをすべての子レコードにカスケードしたいと思います。言い換えれば、すでにP1への外部キーを持っているすべての子レコードは自動的にGP1に外部キーを取得するはずです。
これを行うにはDjangoの方法はありますか?
ありがとうございます。あなたが唯一の管理ページからこれを実行する必要がある場合は
、あなたは、単に管理機能を上書き保存することができます
データベースに冗長なデータが必要な理由はありますか?あなたの例が本当にあなたがしたいことを示している場合、私は子モデルから完全に祖父母フィールドを除外します。 –
これは非常に複雑なデータベース設計の分析製品です。それが設計されていたとき、パフォーマンスなどの間にトレードオフがありました。 –