Добавьте столбцы с новым и старым значением в простую историю 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
Вернуться на верх