2つのモデルがあります。そのうちの1つは、他のモデルのデータを使用して独自のフィールドを設定します。問題は、最初のモデルが更新されたときに、2番目のモデルがそれ自身のフィールドも更新しないということです。私は行かなければならず、実際にフィールドを更新するために2番目のモデルを編集/保存する必要があります。Django - 別のモデルのフィールドをリフレッシュするために信号を使用する
このような何か:
models.py:
class ModelA(models.ModelForm)
...
class ModelB(models.ModelForm)
count_number_of_model_A = models.IntegerField
def save(self)
self.count_number_of_model_A = ModelA.objects.all().count()
super(ModelB, self).save()
(これは私が何をしようとしているの簡易版である)
今私は、フィールド "count_number_of_model_A" をしたいですモデルBが更新され、ModelAが変更されるたびに更新されます。現時点では、ModelBを実際に変更して保存した場合にのみリフレッシュされます。
私は答えが信号(多分?)を使用することだと思います。 ModelAで新しいオブジェクトが作成されるたびに、ModelBが更新されるように信号を設定しようとしています。私は、それらの変更が反映されているModelB.objects.filter(一部のフィルタ).update(いくつかのフィールド)のようなものに入れているかのように私は行くとするとき、信号は、適切に機能している
@receiver(post_save, sender=ModelA)
def update_sends(sender, **kwargs):
if kwargs.get('created', False):
#some code here to refresh ModelB??
:私は以下の持っています新しいModelAオブジェクトを作成します。しかし、モデル全体が更新されず、私が後にしている( "count_number_of_model_A")問題のフィールドは更新されません。
助けが必要ですか?
これは素晴らしい機能でした!ありがとう!私のDBはかなり小さいので、私はそれが遅くなるのを心配していませんが、私はそれを切り替えようとします。ご協力いただきありがとうございます! – Josh