首页 > 解决方案 > django外键修改时如何触发事件

问题描述

我想在用户修改给定外键字段后更新 django 管理站点中的字段。我寻求一种在外键修改后立即触发事件的方法;不是在保存之前/之后

我寻找通过发送方/接收方创建自定义信号。我还试图找到与 m2m_changed 类似的信号。也许这些路径之一可能是解决方案。

class Variety(models.Model):
    specific_name = models.ForeignKey(CatalogList, on_delete=models.CASCADE)

    def update_other_field(self):
        #DO SOMETHING EACH TIME specific_name IS MODIFIED

有没有办法在修改外键后直接触发事件?

标签: django

解决方案


您可以覆盖save“父”模型的方法:

class CatalogList(models.Model):

    def save(self, *args, **kwargs):
        super().save(*args, **kwargs)  # Call normal save method

        # Then do what you want with variety_set reverse relation


推荐阅读