1

查看 Django 源代码,我看到在分配给 ManyToManyField 时,在添加新值之前删除了所有现有值:

https://github.com/django/django/blob/master/django/db/models/fields/related.py#L776

当我的应用程序运行时,这种幼稚的算法将引入巨大的数据库流失——它一次更新数十万个这样的关系。

因为,在我的例子中,这些更新中的大多数将是 noops(即,当前值和新值将是相同的),我可以通过使用我首先检查哪些对象需要添加的算法更新 M2M 字段来轻松减少流失,然后检查哪些需要删除。

这似乎是一种常见的模式,我想知道是否已经存在可重用的功能来做到这一点?

4

0 回答 0