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):
...
.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):
...