2013-03-28 141 views
0

在保存我的一個django模型時,我使用django-dirtyfields來獲取所有已更改的字段。他們不存儲新的值,但我所做的是將所有髒字段(更改字段)都抓到名爲dirty_fields的列表中。然後,我保存該對象,然後嘗試將新字段的所有值都抓到已更改的對象。我有什麼不起作用?我得到'對象沒有屬性'字段'從對象中獲取動態值

new_values = ['{0}: {1}'.format(field,self.field) for field in dirty_fields] 

回答

1

dirty_fields將是一個更改字段的字典。例如

{'boolean': True, 'characters': 'testing'} 

當你迭代使用for field in dirty_fieldsfield參考詞典按鍵,如​​和'characters'。您不能使用self.field,因爲這會在您的實例上嘗試使用屬性查找名稱field

取而代之,您需要採取field鍵值,並要求使用getattr()在自己的實例上查找該字段。

試試這個:

new_values = ['{0}: {1}'.format(field, getattr(self, field)) for field in dirty_fields]