Djangos m2m_changed 触发器未正确触发
Djangos m2m_changed trigger doesn't trigger properly
我有一个如下所示的模型,我希望在每次 user_ids 字段发生变化时触发一个方法。使用 post_save
信号显然没有做任何事情,因为 ManyToMany 关系在这方面很特殊。
class Lease(models.Model):
unit = models.ForeignKey(Unit, on_delete=models.CASCADE)
user_ids = models.ManyToManyField('user.User')
如下使用m2m_changed
触发器也没有做任何事情,这让我感到困惑。我真的不明白这段代码有什么问题,也试图将 '.user_ids' 排除在外。没有任何错误或任何错误,只是在 Lease 模型中的 user_ids 发生更改时不会触发。
@receiver(m2m_changed, sender=Lease.user_ids)
def update_user_unit(sender, instance, **kwargs):
print('Test')
阅读documentation,我想发件人应该是中间模型,而不是ManyToMany字段本身。试试这个:
@receiver(m2m_changed, sender=Lease.user_ids.through)
我有一个如下所示的模型,我希望在每次 user_ids 字段发生变化时触发一个方法。使用 post_save
信号显然没有做任何事情,因为 ManyToMany 关系在这方面很特殊。
class Lease(models.Model):
unit = models.ForeignKey(Unit, on_delete=models.CASCADE)
user_ids = models.ManyToManyField('user.User')
如下使用m2m_changed
触发器也没有做任何事情,这让我感到困惑。我真的不明白这段代码有什么问题,也试图将 '.user_ids' 排除在外。没有任何错误或任何错误,只是在 Lease 模型中的 user_ids 发生更改时不会触发。
@receiver(m2m_changed, sender=Lease.user_ids)
def update_user_unit(sender, instance, **kwargs):
print('Test')
阅读documentation,我想发件人应该是中间模型,而不是ManyToMany字段本身。试试这个:
@receiver(m2m_changed, sender=Lease.user_ids.through)