在 Django 中更新多对多关系时如何不触发 `m2m_changed` 信号?
How to not trigger `m2m_changed` signal when updating many to many relationship in Django?
用例
在我的例子中,我有两个信号正在监听两个 2 m2m 场,每个场都在不同的模型中。问题发生在一个信号被触发时,它会触发另一个信号,反之亦然,这将导致一个永远不会结束的递归循环。我需要一种方便的方法来 运行 一个信号而不触发第二个信号。
了解更多
如果您想知道这种情况是如何发生的:我有两个模型,我需要使它们相互同步;如果我更新了一个模型中的 m2m 字段,我需要将这些更改反映在另一个模型中的另一个 m2m 字段中,反之亦然。
解决方案是使用 set
而不是:add
、remove
或 clear
。因为所有这些都会多次触发 m2m_changed
信号。
这个在documentation talking about set
or the part讲的m2m_changed
中没有提到
用例
在我的例子中,我有两个信号正在监听两个 2 m2m 场,每个场都在不同的模型中。问题发生在一个信号被触发时,它会触发另一个信号,反之亦然,这将导致一个永远不会结束的递归循环。我需要一种方便的方法来 运行 一个信号而不触发第二个信号。
了解更多
如果您想知道这种情况是如何发生的:我有两个模型,我需要使它们相互同步;如果我更新了一个模型中的 m2m 字段,我需要将这些更改反映在另一个模型中的另一个 m2m 字段中,反之亦然。
解决方案是使用 set
而不是:add
、remove
或 clear
。因为所有这些都会多次触发 m2m_changed
信号。
这个在documentation talking about set
or the part讲的m2m_changed