2009-10-09 6 views
23

これは死んでいるはずなので、何かが欠けているはずです。モデルインスタンスのフィールドの値を名前で設定したいだけです。私が持っていると言う:名前でdjangoモデルフィールドを設定するには?

class Foo(Model): 
    bar = CharField() 

f = Foo() 

フィールドにアクセスするのではなく、名前でbarの値を設定したいと思います。だから、のようなもの:

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

代わりの

f.bar = 'BAR' 

は私がSETATTRを試みたが、それはデータベース内の値を保持されません。私も_meta.fieldsを通過しようとしましたが、途中でさまざまなエラーが発生しました。

答えて

48

setattrで値を変更する場合は、モデルを変更した後に保存する必要があります。過去に私は値を変更したが、モデルを保存するのを忘れて、同じ結果を得た。

+10

DOH!うん、私は救うのを忘れた。私は今、残念に隠れるだろう... –

13

もっとコードが必要な場合があります。

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

は、これがDjangoが内部的に行う方法です。

「保存」を呼び出していることを確認してください。

関連する問題