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 实现了 ManyToManyField
和 junction table [wiki]。这意味着它构造了一个额外的 table 和两个 ForeignKey
:一个指向您定义 ManyToManyField
的模型,另一个指向该字段的目标。
如果您想将 link 添加到 request.user
,它会 而不是 更新 [=16] 后面的 table =] 模型。它会简单地在连接点 table 中插入一个额外的条目,它使用主键 group
和 ForeignKey
填充 ForeignKey
到 Group
模型到主键为 request.user
.
的用户模型
这意味着添加、删除、清除等多对多关系将不会对Group
对象进行更改,因此它不应该被保存。通过保存它,您进行了无用的查询。
有什么区别
group.reportedBy.add(request.user)
group.save()
AND
group.reportedBy.add(request.user)
即使我没有执行 .save()
,它也会保存到数据库中如果您不更新 group
的字段(不是 ManyToManyField
,因为它们是用隐藏的 table 实现的),那么保存组就没有意义。
Django 实现了 ManyToManyField
和 junction table [wiki]。这意味着它构造了一个额外的 table 和两个 ForeignKey
:一个指向您定义 ManyToManyField
的模型,另一个指向该字段的目标。
如果您想将 link 添加到 request.user
,它会 而不是 更新 [=16] 后面的 table =] 模型。它会简单地在连接点 table 中插入一个额外的条目,它使用主键 group
和 ForeignKey
填充 ForeignKey
到 Group
模型到主键为 request.user
.
这意味着添加、删除、清除等多对多关系将不会对Group
对象进行更改,因此它不应该被保存。通过保存它,您进行了无用的查询。