アカウント、会社、製品の3つのモデルがあります。製品には、会社、会社、FKに対するForeignKeyがあります。 すべてに 'is_active'というフィールドがあります。モデルの更新時に逆の外部キーモデルを更新します
私は必要なものclass Product(Meta):
company = models.ForeignKey(Company, related_name='products', on_delete=models.CASCADE)
is_active = models.BooleanField(default=False)
class Company(Meta):
account = models.ForeignKey(Account, related_name='account', on_delete=models.CASCADE)
is_active = models.BooleanField(default=False)
:
- アカウントis_activeは、私は、関連するすべての企業のためにしたいFalseになった場合、当社のis_activeは、私が会社に関連するすべての製品に必要偽
- 偽になるis_activeなり、アカウントに、is_activeは偽になるために、また、製品
に伝播私は、保存(または使用後のセーブ信号)を変更する必要があることを知っているが、私は外部キーモデルを選択して変更する方法を知らず、複数のレベルを伝播する。
この関係は親から子へと逆であり、子から親へは逆である。、フィールドFKは使用できません。
逆リレーションのインスタンスは、' MODEL_set'でアクセスできます。 Companyインスタンスの場合は、 'company_instance.product_set'ですべての製品にアクセスできます。これはあなたの質問に答えますか? https://docs.djangoproject.com/en/2/0/topics/db/queries/#related-objects – petr
@petrデフォルトの代わりに関連する名前を使用できますが、逆FKであるため、それらをループする必要があります子モデルのセーブ/アップデートを行います。アカウントがさらに繁殖した場合、いくつかのものを試しますが、動作しません。おそらくあなたは私に完全な質問の例を与えることができます – user3541631
あなたはさらに進んでいく必要はありません - 両方のモデルは 'save()'メソッドをオーバーライドします。つまり、ある関係を離れてインスタンスを変更すると、自動的に。 – petr