def create_modifications(cls, instance, previous, current):
prev = defaultdict(lambda: None, previous)
curr = defaultdict(lambda: None, current)
# Compute difference between previous and current
diffkeys = set([k for k in prev if prev[k] != curr[k]])
in_previous_not_current = set([k for k in prev if k not in curr])
in_current_not_previous = set([k for k in curr if k not in prev])
diffkeys = diffkeys.union(in_previous_not_current).union(in_current_not_previous)
current_datetime = timezone.now()
for key in diffkeys:
FieldModification.objects.create(
field_name=key,
previous_value=prev[key],
current_value=curr[key],
content_object=instance,
created=current_datetime,
)
评论列表
文章目录