История Диффинга

Когда у вас есть два экземпляра одного и того же HistoricalRecord (как в примере HistoricalPoll выше), вы можете выполнить diffs, чтобы увидеть, что изменилось. В результате получится ModelDelta, содержащий следующие свойства:

  1. Список с указанием каждого поля, измененного между двумя историческими записями

  2. Список с именами всех полей, в которых произошли изменения от одной записи к другой

  3. старые и новые записи.

Это может быть полезно, когда вы хотите построить временную шкалу и вам нужно получить только модификации модели.

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))
Вернуться на верх