2016-05-11 62 views
1

我有一個模型實例,包含字段的名稱,我要打印一個變量:Django:如何從Model實例動態獲取字段的字段名稱?

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

我如何獲得通過FIELD_NAME的那場價值?我不能說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