2013-03-28 66 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]