obiekt QuerySet - serializacja, zapis do bazy danych i deserializacja

0

Witam,

Chciałbym poprosić o radę, jak przeprowadzić taki oto proces:

Mam przykładowy wynik queryseta: ```python
Words.objects.all()[:10]


Oczywiście napisanie własnej metody implementującej to, co chcę osiągnąć,nie jest trudne. Jednak chodzi mi o jakiś "pythonowy" sposób osiągnięcia celu.

Próbowałem zapisu do jsona (json.dumps(), serializers.serialize()), jednak tego, co otrzymuję po zdeserializowaniu takiego obiektu, w żaden sposób nie da się wrzucić do pętli w szablonie.
0
  1. Czemu chcesz zapisać wynik queryseta który jest z BAZY DANYCH z powrotem do bazy? Nie potrafię sobie wyobrazić zastosowania do tego ani jakiegokolwiek sposobu użycia.
  2. https://docs.djangoproject.com/en/1.10/topics/serialization/
0
  1. Przykład jest bardzo uproszczony, w rzeczywistości zapytanie składa się z większej liczby warunków i w innym czasie da inne rezultaty. Chodzi o to, by na żądanie uzyskać dostęp do dokładnie tych samych wyników. A może jest na to inny sposób? W PHP sprawę rozwiązują dwie proste funkcje: json_encode i json_decode.
  2. Z dokumentacją zapoznałem się dość dobrze :)
0

Jeśli potrzebujesz danych z różnych encji i ich pobranie wymaga wielu zapytań do bazy danych, najłatwiej będzie zdenormalizować dane i stworzyć nową encję, w której zapiszesz dane. Potem będziesz mógł pobrać dane w jednym zapytaniu.

Jeśli chcesz je zapisać w formacie jsonowym to możesz użyć do tego pythonowej biblioteki json.

0

Może łatwiej by było coś doradzić jakbyś powiedział jaki jest "biznesowy" cel takiego działania, jaką funkcjonalność chcesz w ten sposób stworzyć?
Czy to ma być coś w stylu dostępu do wersji encji na każdym etapie edycji? Coś jak w przypadku postów na blogu:

  • wersja z 01.01.2001 zawiera sam tekst
  • wersja z 02.01.2001 zawiera tekst i zdjęcia A
  • wersja z 03.01.2001 zawiera tylko zdjęcia A i B

i na żądanie chciałbyś mieć dostęp do postów z konkretnej daty / wersji?

0
artur_waw napisał(a):

Może łatwiej by było coś doradzić jakbyś powiedział jaki jest "biznesowy" cel takiego działania, jaką funkcjonalność chcesz w ten sposób stworzyć?
Czy to ma być coś w stylu dostępu do wersji encji na każdym etapie edycji? Coś jak w przypadku postów na blogu:

  • wersja z 01.01.2001 zawiera sam tekst
  • wersja z 02.01.2001 zawiera tekst i zdjęcia A
  • wersja z 03.01.2001 zawiera tylko zdjęcia A i B

i na żądanie chciałbyś mieć dostęp do postów z konkretnej daty / wersji?

Konkretnie chcę pobrać ileś tam rekordów z bazy spełniających określone kryteria, np. wpisy utworzone między taką a taką datą, a z nich wybrane w sposób dowolny przez użytkownika. Użytkownik następnie musi mieć możliwość w dowolnym momencie wyświetlenia sobie utworzonego wcześniej zestawu. Ja wyobrażam to sobie tak, że wybrane przez użytkownika rekordy są zapisywane w bazie jako json, a w przypadku próby ich wyświetlenia są z bazy pobierane, deserializowane i wyświetlane w szablonie.

Jaśniej chyba nie mogę ;)

0

A jakbyś zapisał po prostu ID tych rekordów? Czy to nie przejdzie w twoim przypadku?

0
anonimowy napisał(a):

A jakbyś zapisał po prostu ID tych rekordów? Czy to nie przejdzie w twoim przypadku?

Bardzo proste rozwiązanie i chyba najbardziej dostosowane do potrzeby.

q = JakisModel.objects.values_list('id', flat=True)
s = json.dumps(list(q))

#zapis do bazy
#pobranie z bazy

s = json.loads(string_from_db)

#zapytanie do bazy o obiekty o podanych id

Dzięki.

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