在保存我的一个 django 模型时,我使用 django-dirtyfields 来获取所有已更改的字段。它们不存储新值,所以我所做的是将所有脏字段(更改的字段)抓取到一个名为dirty_fields 的列表中。然后我保存对象,然后尝试将新字段的所有值获取到它们已更改的值。为什么我所拥有的不起作用?我得到'对象没有属性'字段'
new_values = ['{0}: {1}'.format(field,self.field) for field in dirty_fields]
在保存我的一个 django 模型时,我使用 django-dirtyfields 来获取所有已更改的字段。它们不存储新值,所以我所做的是将所有脏字段(更改的字段)抓取到一个名为dirty_fields 的列表中。然后我保存对象,然后尝试将新字段的所有值获取到它们已更改的值。为什么我所拥有的不起作用?我得到'对象没有属性'字段'
new_values = ['{0}: {1}'.format(field,self.field) for field in dirty_fields]
dirty_fields
将是更改字段的字典。例如
{'boolean': True, 'characters': 'testing'}
当您使用 进行迭代时for field in dirty_fields
,field
指的是字典键,例如'boolean'
and 'characters'
。您不能使用,因为这将尝试在您的实例上self.field
查找属性名称。field
相反,您需要获取键值,并要求使用getattr()field
在 self 的实例上查找此字段。
试试这个:
new_values = ['{0}: {1}'.format(field, getattr(self, field)) for field in dirty_fields]