在保存我的一个django模型时,我正在使用django-dirtyfields来获取所有已更改的字段。它们不存储新值,但我所做的是将所有脏字段(已更改的字段)抓取到名为dirty_fields的列表中。然后我保存对象,然后尝试获取新字段的所有值以更改它们。为什么我的工作不起作用?我得到'对象没有属性'字段'
new_values = ['{0}: {1}'.format(field,self.field) for field in dirty_fields]
答案 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]