2010-03-23 27 views
6

Mam różne modele, które chciałbym śledzić i zbierać dane statystyczne.Śledzenie zmian - Django

Problem polega na tym, jak przechowywać zmiany przez cały czas.

Myślałem o różnych alternatywnych:

  • Zapisywanie dziennika w TextField, otwórz go i aktualizować za każdym razem, gdy model został zapisany.
  • Alternatywnie można wybrać listę i zapisać ją w polu tekstowym.
  • Zapisywanie logów na dysku twardym.

Jakie są wasze sugestie?

Odpowiedz

6

Nie wymyślaj ponownie koła. Użyj rejestru django-reversion do rejestrowania zmian.

Jednak podzielę statystyki na osobny model.

+0

Baza danych dziennika wydaje się przesadą, jeśli mam poprawnie czyta OP. – msw

+0

@Oli Chciałbym wiedzieć o tym jakiś czas temu, musiałem wdrożyć wiki od zera. To by bardzo pomogło. Btw w tym celu, może być nieco zbyt nadęty. W każdym razie, dziękuję bardzo !! – RadiantHex

1

Quoth my elementary chemistry teacher: "Jeśli tego nie zapiszesz, to się nie stało", dlatego zapisz logi w pliku.

Ponieważ informacje w dzienniku są rozłączne z danych aplikacji (w rzeczywistości są to metadane), należy je oddzielić. Można zalogować się do tabeli bazy danych, ale powinna ona być różna od modelu.

Dane tekstowe z utartego materiału są trudne do odczytania dla ludzi, a dane binarne marnują się jeszcze bardziej; zaloguj się w łatwo analizowanym formacie, a dane można łatwo zaimportować do oprogramowania analitycznego.

+0

@msw: Robię to tak, jak sugerujesz. Dzięki temu rejestracja w Pythonie jest rzeczywiście bardzo potężna. :) – RadiantHex

1

Miałem podobną sytuację, w której mieliśmy zachować historię zmian. Ale potrzebowaliśmy również audytu, aby śledzić, kto wprowadził zmiany i możliwość cofnięcia. W naszym podejściu przechowywanie w bazie danych wydawało się bardziej logiczne. Jednak biorąc pod uwagę, że masz dane statystyczne i ich rozmiar jest duży, być może lepsze będzie dla Ciebie oddzielne podejście oparte na plikach.

W każdym przypadku powinieneś używać ogólnego mechanizmu do rejestrowania zmian w modelach zamiast kodowania każdego modelu w sposób doroczny.

Spójrz na to: http://www.djangosnippets.org/snippets/1052/

+0

@sharjeel to jest niesamowite! Dzięki! – RadiantHex

Powiązane problemy