Добавьте столбцы с новым и старым значением в простую историю Django
Мне нужно реализовать модель History и отслеживать некоторые события, такие как: New project, Edit project, etc
Я нашел это приложение, которое делает почти то, что я хочу.
Я следовал документации, но у меня возникла проблема. Созданные таблицы содержат следующие столбцы:
history_user, history_date, history_change_reason, history_id, history_type
Это замечательно, но я также хотел бы иметь некоторую информацию о том, какие поля изменились в случае, если произошло событие типа Update.
Как я могу добавить столбцы New value и Old value в строки, создаваемые приложением?
Я нашел это о History Diffing, но мне не ясно, как это подключить.
Все мои модели сейчас выглядят так:
class ModelName(models.Model):
#model fields
history = HistoricalRecords()
django-simple-history history diffing возвращает объекты Python (не столбцы таблицы). В примере ниже это строки (URLField - это CharField с дополнительным шагом валидации):
# models.py
class Project(models.Model):
name = models.CharField(max_length=200)
website = models.URLField(max_length=200, blank=True)
history = HistoricalRecords()
# views.py
p = Project.objects.create(name="Human Brain Project")
p.website = "https://www.humanbrainproject.eu/"
p.save()
new_record, old_record = p.history.all()
delta = new_record.diff_against(old_record)
for change in delta.changes:
changed_field = change.field # can be either name or website
new_value = change.new # string
old_value = change.old # string