Отслеживание изменений - Django - PullRequest
6 голосов
/ 24 марта 2010

У меня есть различные модели, которые я хотел бы отслеживать и собирать статистические данные.

Проблема в том, как хранить изменения во времени.

Я думал о различных альтернативах:

  • Сохраняя журнал в TextField, открывайте его и обновляйте каждый раз при сохранении модели.
  • Или выберите список и сохраните его в TextField.
  • Сохранение журналов на жестком диске.

Какие у вас предложения?

Ответы [ 3 ]

6 голосов
/ 24 марта 2010

Не изобретайте велосипед. Используйте django-reversion для регистрации изменений.

Я бы разбил статистику на отдельную модель.

1 голос
/ 24 марта 2010

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

В любом случае вы должны использовать общий механизм для регистрации изменений в моделях, а не кодировать каждую модель по отдельности.

Взгляните на это: http://www.djangosnippets.org/snippets/1052/

1 голос
/ 24 марта 2010

Процитировал мой учитель химии начальных классов: «Если вы не запишите это, этого не произошло», поэтому сохраните журналы в файле.

Поскольку данные журнала не связаны с данными вашего приложения (на самом деле это метаданные), храните их отдельно. Вы можете войти в таблицу базы данных, но она должна отличаться от вашей модели.

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

...