Какой лучший способ сделать полную историю для модели в Django? - PullRequest
0 голосов
/ 25 апреля 2018

Как сделать историю для модели, которая показывает мне старое значение и новое измененное значение в поле?

На мой взгляд, я думаю сделать историю моделью для каждой модели, которая имеет те же поля и когдапользователь создает новые или обновляет данные из первой модели. Перейдите ко второй модели.

Я много раз искал эту проблему и нашел пакет с именем django-reversion, но я не понял, как сделатьон хранит старое и новое значение, если кто-то может помочь мне в этой проблеме, пожалуйста, скажите мне.

Ответы [ 3 ]

0 голосов
/ 25 апреля 2018

В по этой ссылке есть сравнение различных пакетов, которые можно использовать для аудита / истории моделей.

Я использую django-simple-history , которыйпоставляется с приятной интеграцией для просмотра списка изменений каждого экземпляра модели в админке.

По крайней мере, для моего случая использования, django-simple-history предоставила мне то, что мне было нужно, и до сих пор я этого не делалстолкнуться с любыми проблемами с ним.


РЕДАКТИРОВАТЬ: просто дополнительная заметка

Этот пакет НЕ отслеживать историю ManyToManyField.

См. Также следующие связанные вопросы:

  1. Как сохранить историю ManyToManyField с помощью django-simple-history.
  2. История ManyToManyField в django-простая история

И выпуск Github:

  1. https://github.com/treyhunner/django-simple-history/issues/16
0 голосов
/ 25 апреля 2018

Может быть, есть чистая библиотека, которая делает все, что вам нужно, я просто не знаю.

Как я подойду к этой проблеме, это переопределение функции сохранения модели.Вы можете сослаться на эту предыдущую публикацию stackoverflow , чтобы понять суть происходящего.Таким образом, вы можете указать, для какой модели класса / таблицы SQL вы хотите использовать память.А затем добавьте в пользовательский метод сохранения, чтобы создать новую строку в новом классе модели журнала изменений.

0 голосов
/ 25 апреля 2018

Для этого вы можете использовать simple-history app

Каждые изменения вашего экземпляра будут отражены в исторической таблице. Будет новая строка с новыми значениями для каждого изменения. так что вы можете воспроизвести все старые значения для каждого поля.

...