我有一个类Account
,代表我的应用程序中的客户。
我想通过将它们记录到我的数据库中来跟踪Account
的所有更改。
我想要实现的一个例子:
用户A将Account.is_abandoned从False更改为True
为此,我创建了一个类Entry
,可以将其视为存储上面的块引用的日志条目。
我正在尝试合并this recipe
def save(self, *args, **kwargs):
"""Overriding this to create an Entry in the corresponding Timeline.
Pass in user=User for Entry Creation.
See this link for the recipe.
"""
old = type(self).objects.get(pk=self.pk) if self.pk else None
user = kwargs.pop('user', None)
super().save(*args, **kwargs)
if not old:
return
changes = {}
for attr in ['instance', 'status', 'spent_in_hkd',
'is_attention_required', 'is_abandoned',
'is_spending']:
if getattr(old, attr) != getattr(self, attr):
changes[attr] = (getattr(old, attr), getattr(self, attr))
if not changes:
logging.debug('EntryNotCreated: No changes detected.')
return
cs = '\n'.join(['{}: {} -> {}'.format(k, v1, v2) for k, (v1, v2) in changes.items()])
entry = Entry.objects.create(
user=user,
account=self,
content=cs
)
entry.save()
我的问题是,即使我通过Django的通用UpdateView更改了它,有时这种方法也无法检测到任何变化。
任何想法为什么?