Wyświetlenie całej bazy danych po dacie

0

Witam, nie mam pomysłu i nie moge znaleźć pomysłu jak wyświetlić np. ostatnie 10 modyfikacji bazy danych bądź nowych wpisów. Chce po prostu zrobić liste ostatnich zmian od wejścia.

0

Przede wszystkim dokumentacja django (jedna z najlepszych dokumentacji jakie istnieją) - https://docs.djangoproject.com/en/dev/topics/db/queries/#limiting-querysets

Jeśli chcesz wyświetlić np. 10 ostatnich wpisów dodanych do tabeli Article możesz to zrobić tak:

Article.objects.all().order_by('-id')[:10]

Z wyświetlaniem ostatnich zmodyfikowanych wpisów jest troszkę więcej kłopotu - sama tabela nie przechowuje takich informacji, więc tworząc ją musiałbyś w niej stworzyć pole, które zapamiętuje kiedy modyfikacja została dokonana, np. pole modified tworzone w ten sposób:

modified = models.DateTimeField(auto_now=True, auto_now_add=True)

opis znajdziesz tutaj: https://docs.djangoproject.com/en/dev/ref/models/fields/#datetimefield

Jeśli tabela będzie już przechowywała datę modyfikacji, to wtedy możesz otrzymać 10 ostatnio zmodyfikowanych rekordów w taki sposób:

Article.objects.all().order_by('-modified')[:10]
0

Z tym, że chodzi mi o kilka tabel. Np. Dodanie komenatrza, dodanie posta, złożenie zamówienia, zarejstrowanie użytkownika, i chce ostatnich 10 wykonanych danych akcji.

0

Wyświetlać ostatnich dziesięć akcji (różnych dla różnych tabel) można, ale pod warunkiem, że sam gdzieś zapisujesz fakt ich zdarzenia. Takie informacje nie są przecież same z siebie zapisywane w bazie danych, więc jeśli się nie postarałeś o to, żeby były zapisywane to nic z tego...

Musiałbyś sam stworzyć tabelę, gdzie będą one zapisywane, ot w najprostszym przypadku mającą pola id i zdarzenie, a następnie postarać się, żeby przy wystąpieniu zdarzenia (modyfikacja, wstawienie, usunięcie rekordu w którejś z tabel) do niej był zapisywany np. ciąg dodanie komentarza. W dopisywanie zdarzeń można rozwiązać na trzy sposoby:

  1. Sam w kodzie, który modyfikuje/zapisuje rekord dodajesz jednocześnie do tabeli zdarzenia zapis o tym zdarzeniu - trochę pracochłonne, masa niepotrzebnego kodu, łatwo się gdzieś "machnąć"
  2. Wykorzystując triggery/wyzwalacze w bazie danych - wtedy wykonanie jakiejś operacji na tabeli wywoła akcję dopisania zdarzenia do tabeli z poziomu samej bazy danych
  3. Wykorzystując djangowskie sygnały https://docs.djangoproject.com/en/dev/topics/signals/ podpinając pod nie odpowiednie działanie (zapis informacji o zdarzeniu) przy zapisie czy usunięciu rekordu z jakiejś tabeli

Dopiero w tym momencie mając gdzieś zapisane to dodanie komentarza, dodanie posta, złożenie zamówienia, zarejestrowanie użytkownika możesz myśleć o ich wyświetleniu.

0
madmike napisał(a):

Wyświetlać ostatnich dziesięć akcji (różnych dla różnych tabel) można, ale pod warunkiem, że sam gdzieś zapisujesz fakt ich zdarzenia. Takie informacje nie są przecież same z siebie zapisywane w bazie danych, więc jeśli się nie postarałeś o to, żeby były zapisywane to nic z tego...

Musiałbyś sam stworzyć tabelę, gdzie będą one zapisywane, ot w najprostszym przypadku mającą pola id i zdarzenie, a następnie postarać się, żeby przy wystąpieniu zdarzenia (modyfikacja, wstawienie, usunięcie rekordu w którejś z tabel) do niej był zapisywany np. ciąg dodanie komentarza. W dopisywanie zdarzeń można rozwiązać na trzy sposoby:

  1. Sam w kodzie, który modyfikuje/zapisuje rekord dodajesz jednocześnie do tabeli zdarzenia zapis o tym zdarzeniu - trochę pracochłonne, masa niepotrzebnego kodu, łatwo się gdzieś "machnąć"
  2. Wykorzystując triggery/wyzwalacze w bazie danych - wtedy wykonanie jakiejś operacji na tabeli wywoła akcję dopisania zdarzenia do tabeli z poziomu samej bazy danych
  3. Wykorzystując djangowskie sygnały https://docs.djangoproject.com/en/dev/topics/signals/ podpinając pod nie odpowiednie działanie (zapis informacji o zdarzeniu) przy zapisie czy usunięciu rekordu z jakiejś tabeli

Dopiero w tym momencie mając gdzieś zapisane to dodanie komentarza, dodanie posta, złożenie zamówienia, zarejestrowanie użytkownika możesz myśleć o ich wyświetleniu.

Wchodząć na strone właśnie wpadłem na pomysł pierwszy ale jest pracochłonny więc skłoniłbym się do 2 i 3 punktru z tym, że nie za bardzo moge znaleźć jakieś praktyczne info o 2 punkcie a o punkcie 3 jutro poczytam

1 użytkowników online, w tym zalogowanych: 0, gości: 1