Django在保存后更新m2m字段值

2024-05-29 08:12:20 发布

您现在位置:Python中文网/ 问答频道 /正文

问题是,在使用新的m2m_字段值保存模型实例后,我希望自动向其添加一些更相关的对象

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_字段后,接收器会再次触发,以此类推。有合适的方法吗

谢谢你的帮助


Tags: 对象实例instance模型appfieldmodelmodels
1条回答
网友
1楼 · 发布于 2024-05-29 08:12:20

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

@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)

相关问题 更多 >

    热门问题