Django 在不保存的情况下添加到多对多字段工作

Django add to many to many field working without save

有什么区别

group.reportedBy.add(request.user)
group.save()

AND

group.reportedBy.add(request.user)

即使我没有执行 .save()

,它也会保存到数据库中

如果您不更新 group 的字段(不是 ManyToManyField,因为它们是用隐藏的 table 实现的),那么保存组就没有意义。

Django 实现了 ManyToManyFieldjunction table [wiki]。这意味着它构造了一个额外的 table 和两个 ForeignKey:一个指向您定义 ManyToManyField 的模型,另一个指向该字段的目标。

如果您想将 link 添加到 request.user,它会 而不是 更新 [=16] 后面的 table =] 模型。它会简单地在连接点 table 中插入一个额外的条目,它使用主键 groupForeignKey 填充 ForeignKeyGroup 模型到主键为 request.user.

的用户模型

这意味着添加、删除、清除等多对多关系将不会Group对象进行更改,因此它不应该被保存。通过保存它,您进行了无用的查询。