History DiffingΒΆ
When you have two instances of the same HistoricalRecord
(such as the HistoricalPoll
example above),
you can perform diffs to see what changed. This will result in a ModelDelta
containing the following properties:
- A list with each field changed between the two historical records
- A list with the names of all fields that incurred changes from one record to the other
- the old and new records.
This may be useful when you want to construct timelines and need to get only the model modifications.
p = Poll.objects.create(question="what's up?")
p.question = "what's up, man?"
p.save()
new_record, old_record = p.history.all()
delta = new_record.diff_against(old_record)
for change in delta.changes:
print("{} changed from {} to {}".format(change.field, change.old, change.new))
diff_against
also accepts 2 arguments excluded_fields
and included_fields
to either explicitly include or exclude fields from being diffed.