2016-05-11 10 views
1

私はモデルインスタンスと私は印刷する必要があり、フィールドの名前を含む変数があります:私はFIELD_NAMEによってそのフィールドの値を取得するにはどうすればよいDjango:Modelインスタンスからフィールド名でフィールドを動的に取得する方法は?

field_name = "is_staff" 
user = User.objects.get(pk=0) 

を?私はちょうどuser.is_staffと言うことができません、私はフィールドがis_staffと呼ばれるハードコードできない原因です。

重要:フィールドに値を割り当てる必要があります。この方法は、user.is_staff = Trueです。

+1

['getattr'](https://docs.python.org/2/library/functions.html#getattr)を使用してください。これはDjangoと何が関係がありますか?また、あなたがこれをやっている理由を慎重に検討してください。 「可変変数」は、ほとんど常にコード臭です。 –

+2

[pythonで動的属性を取得する]の重複の可能性があります(http://stackoverflow.com/questions/13595690/getting-dynamic-attribute-in-python) –

答えて

1

`getattr 'を使うことができます。このように動作します

field_name = "is_staff" 
user = User.objects.get(pk=0) 
field_name_val = getattr(user, field_name) 
+0

このフィールドに値を割り当てることはできますか? 'getattr(user、field_name)= False'ですか? –

+0

これは関数呼び出しです。あなたはそれを割り当てることはできません。 –

+1

@Bob 'setattr(user、field_name、False)'を使用するには、 – serg

関連する問題