Django-保存后更新m2m字段值



问题是,在保存了一个具有新m2m_field值的模型实例后,我想自动向其中添加更多相关对象。

class MyModel(models.Model):
m2m_field = models.ManyToManyField("app.RelatedModel")
@receiver(models.signals.m2m_changed, sender=MyModel.m2m_field.through)
def m2m_field_changed(sender, instance, **kwargs):
instance.m2m_field.add(related_object_instance)

这显然会导致一个无限循环,因为在将实例添加到m2m_field后,接收器会再次启动,以此类推。有合适的方法吗?

谢谢你的帮助。

您必须首先检查相关对象之前是否已添加:

@receiver(models.signals.m2m_changed, sender=MyModel.m2m_field.through)
def m2m_field_changed(sender, instance, **kwargs):
if related_object_instance not in instance.m2m_field:
instance.m2m_field.add(related_object_instance)

最新更新