2009-10-09 80 views
23

這看起來應該是死的簡單,所以我必須錯過一些東西。我只想按名稱在模型實例中設置字段的值。假設我有:如何按名稱設置django模型字段?

class Foo(Model): 
    bar = CharField() 

f = Foo() 

我想按名稱設置bar的值,而不是通過訪問字段。因此,像:的

f.fields['bar'] = 'BAR" 

代替

f.bar = 'BAR' 

我試過SETATTR但它不堅持在數據庫中的值。我也嘗試通過_meta.fields,但一路上有各種各樣的錯誤。

回答

48

如果您通過setattr修改值,則需要記住在修改模型後保存模型。在過去,我改變了價值觀,但忘記保存模型,並得到了相同的結果。

setattr(f, 'bar', 'BAR') 
f.save() 
+10

DOH!是的,我忘了保存。我現在會躲在恥辱之中...... – 2009-10-09 19:50:26

13

我們可能得看到更多的代碼。

setattr(f, 'bar', 'BAR') 

應該這樣工作,因爲這是Django在內部執行的操作。

確保您還在調用'保存'。

相關問題