0

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

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

1 回答 1

1

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

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

当您使用 进行迭代时for field in dirty_fieldsfield指的是字典键,例如'boolean'and 'characters'。您不能使用,因为这将尝试在您的实例上self.field查找属性名称。field

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

试试这个:

new_values = ['{0}: {1}'.format(field, getattr(self, field)) for field in dirty_fields] 
于 2013-03-28T01:28:36.083 回答