问题描述
使用.set()
设置ManyToMany关系时可以做些什么吗?
比方说,我们有:
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 = ModelA()
a.set([b1,b2,b3])
调用.set()
时,会为每个a-b关系创建一个 ModelMN 实例。每次创建时,是否可以修改该实例的字段(每个ModelMN实例)?
在.save()
上覆盖ModelMN
方法似乎无法正常工作。
解决方法
我一直在寻找m2m_changed
信号。
@receiver(m2m_changed,sender=ModelA.b_models.through)
function do_something(sender,**kwargs):
...