从对象获取动态值

时间:2013-03-28 01:00:04

标签: django

在保存我的一个django模型时,我正在使用django-dirtyfields来获取所有已更改的字段。它们不存储新值,但我所做的是将所有脏字段(已更改的字段)抓取到名为dirty_fields的列表中。然后我保存对象,然后尝试获取新字段的所有值以更改它们。为什么我的工作不起作用?我得到'对象没有属性'字段'

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

1 个答案:

答案 0 :(得分:1)

dirty_fields将是已更改字段的字典。例如

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

当您使用for field in dirty_fields进行迭代时,field会引用字典键,例如'boolean''characters'。您无法使用self.field,因为这会在您的实例上尝试使用属性查找名称field

相反,您需要获取field键值,并要求使用getattr()在self实例上查找此字段。

试试这个:

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