2015-10-14 37 views
0

例子:Django的:價值分配的相關對象的所有負面效果,節約

user = instance.user 
user.updated_at = now() 
user.save() 

除了「點優化」和「可讀性」,爲好奇的緣故,還有什麼技術原因不喜歡以下嗎?

instance.user.updated_at = now() 
instance.user.save() 
+0

我還有其他的提及,但如果你使用第二種方法,你的'用戶'不會得到更新!聽起來像Django正在緩存實例的'用戶'字段的數據? –

+0

@ShangWang對象將在這兩種情況下更新 – Alvaro

+0

@ShangWang我自己測試過它,第二種方法確實有效,但我有一個印象它沒有起作用,因爲看起來這個引用被丟棄了。 –

回答

1

不,這是完全一樣的。 Django將在您首次訪問instance.user對象時執行SELECT。該對象的行爲與其他任何行爲相同(對於它使用新的引用無關緊要)。

如果您考慮執行查詢的時刻,可以像對待任何python對象一樣對待模型。