我有兩個模型,其中一個使用來自另一個模型的數據來填充它自己的字段。問題是當更新第一個模型時,第二個模型不會更新它自己的字段。我必須進入並實際編輯/保存第二個模型以更新其字段。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」在ModelB中每更新一次ModelA都會更新。現在,如果我實際修改+保存ModelB,它只會刷新。
我認爲答案是使用信號(也許?)。我試圖設置一個信號,以便ModelB每當在ModelA中創建一個新對象時都會更新。我有以下幾點:
@receiver(post_save, sender=ModelA)
def update_sends(sender, **kwargs):
if kwargs.get('created', False):
#some code here to refresh ModelB??
的信號是否正常,因爲如果我把類似ModelB.objects.filter(一些過濾器).update(某些領域),這些變化都反映,當我進去創建一個新的ModelA對象。但是整個模型本身沒有更新,而且我所追求的字段(「count_number_of_model_A」)沒有刷新。
任何幫助?
這工作得很好!謝謝!我的數據庫相當小,所以我並不擔心它會放慢速度,但我會考慮嘗試將其切換。謝謝你的幫助! – Josh