Wpis z mikrobloga

#naukaprogramowania #python #django
Mam taką zagwozdkę mirki. Rozwiązanie jest zapewne banalne, ale nie mam pomysłu, jak do tego podejść.
Chciałbym, aby każdy użytkownik po rejestracji otrzymywał wydzielone dla siebie 2 tabele (jeśli nie mam jakichś błędów w rozumowaniu, to można je utożsamić z modelami). Każda para będzie identyczna dla każdego użytkownika (będzie zawierać te same pola), różnica polegałaby tylko na nazwie (n.p. dodanym id po nazwie modelu).

Jest na to jakiś sposób? Jak na razie odgrzebałem na SO dynamiczne tworzenie modeli, ale tam nawet pola są zmienne.
Jakimś rozwiązaniem byłoby też dodanie w tych dwu modelach obcego klucza w postaci id użytkownika do każdego rekordu, ale to wydaje się nieco brutalne.

Jakieś rady? Dzięki z góry ( ͡° ͜ʖ ͡°)
  • 33
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@LOLWTF: @Szarlejowiec: będę używał ich do przetrzymywania danych potrzebnych do obsługi generatora list czytających (mój ostatni post w programowaniu). W pierwszej tabeli będą przetrzymywane osoby - imię, 3 wartości bool i jeden int zliczający ilośc wystąpień w liście (potrzebny do sortowania).

W drugiej tabeli będą przetrzymywane historyczne generacje list (używane do odtworzenia starszych aktów generacji).

I chciałbym, żeby każdy user miał swoje własne tabele, aby nie trzymać tego
  • Odpowiedz
@LOLWTF: @beeper: ok, po przemyśleniu to wydaje się być najlepszą opcją. W szczególności, że z django dopiero się zapoznaję i zbytnie "chachmęcenie" raczej mi nie pomoże. Już nawet nie wspominając kwestii, że złożenie do kupy tego wszystkiego przy dwu statycznych modelach będzie pierdyliardy razy prostsze. Dzięki za pomoc :)
  • Odpowiedz
@ksiak: to partycjonowanie jest bardzo ciekawe! Nawet gdzieś hasła o tym przewijają się po GitHubie (w kontekście samego django. Partycjonowanie odbywa się na płaszczyźnie samej bazy danych przy zachowaniu kompatybilności z django). To też poleciało do zakładek, dzięki :)
  • Odpowiedz
@Fitoplankton: dokładnie. To jest funkcja samej bazy danych i jest niejako transparentna dla języka SQL. Bardzo często jednak bazy dostarczają dodatkowe rozszerzenia do języka SQL którymi możesz coś więcej podziałać.
  • Odpowiedz
@Szarlejowiec: @morsik: akurat w tej sytuacji moje początkowe podejście było bez sensu, zgadzam się. Ale wątek z partycjonowaniem jest ciekawy. Nie wiem, na ile jest to bezpieczne działanie, ale przy naprawdę dużej bazie zysk powinien być zauważalny
  • Odpowiedz