保存具有未保存的相关对象的对象

Ern*_*Ten 3 python django

django 不提供自动保存未保存的相关对象的功能是否有原因?

\n\n

来自文档

\n\n
\n

Django 1.8.4 中的更改:

\n\n

以前,保存具有未保存的相关对象的对象不会引发错误,并且可能会导致静默数据丢失。在 1.8-1.8.3 中,未保存的模型实例无法分配给相关字段,但已删除此限制以便更轻松地使用内存中模型。

\n
\n\n

我可以理解为什么有一个

\n\n
ValueError: save() prohibited to prevent data loss due to unsaved related object\n
Run Code Online (Sandbox Code Playgroud)\n\n

而不是仅默认保存该对象(我的猜测是显式优于隐式),但我什至无法找到上述功能请求。

\n

Say*_*yse 5

导致变更的机票

我更喜欢尽早失败,通过在将未保存的对象分配给相关字段时引发异常来失败。

我可以听到一个试图从 save() 中缓存的相关实例重新获取 pk 的参数,但这感觉就像是远距离操作:实际问题通常发生得更早。

自动保存相关对象太神奇了;我确信在某些情况下这会被认为是意外和不受欢迎的。

我的解释是,Django 的开发人员不希望人们养成自动保存事物的习惯,因为这只会导致在不同时间点出现问题。每个对象的显式保存可确保开发人员清楚地了解正在保存的内容,并减少对一行代码破坏功能的意外更改。