Django:设置时更新 ManyToMany 实例的字段

Django: update field of ManyToMany instance when it's set

.set()设置多对多关系时是否可以做一些事情?

比方说,我们有:

class ModelA():
  b_models = models.ManyToManyField(ModelB, related_name="as", through="ModelMN")

class ModelMN():
  model_a = models.ForeignKey(ModelA)
  model_b = models.ForeignKey(ModelB)

当我们有一个 模型 A 的实例和 模型 B 实例的列表时:

a = ModelA()
a.set([b1, b2, b3])

调用.set()时,会为每个a-b关系创建一个ModelMN实例。是否可以在每次创建该实例(每个 ModelMN 实例)时修改该实例的字段?

覆盖 ModelMN 上的 .save() 方法似乎不起作用。

我正在寻找 m2m_changed 信号。

@receiver(m2m_changed, sender=ModelA.b_models.through)
function do_something(sender, **kwargs):
    ...