2011-01-13 17 views
26

Kiedy zrobić toCo to jest django QuerySet?

>>> b = Blog.objects.all() 
>>> b 

uzyskać to

>>>[<Blog: Blog Title>,<Blog: Blog Tile>] 

Kiedy zapytać, jaki typ B jest

>>> type(b) 

uzyskać to

>>> <class 'django.db.models.query.QuerySet'> 

Co robi to znaczy ? czy jest to typ danych, jak dykt, lista itp.?

Przykład, w jaki sposób mogę zbudować strukturę danych, taką jak QuerySet, zostanie doceniony.

chciałbym wiedzieć, jak budować, że Django QuerySet (krwawe szczegóły)

Gat.

+1

Możesz zajrzeć na kodzie źródłowym Django zobaczyć drastyczne szczegóły. Poza tym, QuerySet to po prostu obiekt podobny do wielu innych, który czasami zachowuje się jak lista. –

+0

Co to jest: http://docs.djangoproject.com/en/dev/ref/models/querysets/ Jak to działa, jak już wspomniano, spójrz na kod źródłowy. –

+0

Dlaczego zostało to odrzucone? – Davy8

Odpowiedz

25

django queryset jest jak sama nazwa mówi, w zasadzie zbiorem (SQL) kwerendy, w swoim przykładzie powyżej print b.query pokaże zapytania SQL wygenerowany z połączeń Django filter.

Ponieważ kwerendy to lazy, zapytanie do bazy danych nie jest wykonywane natychmiast, ale tylko wtedy, gdy jest potrzebne - gdy zestaw kwerend jest oceniony. Dzieje się tak na przykład, jeśli wywołasz jego metodę __str__ podczas drukowania, jeśli zadzwonisz pod numer list() lub, co się dzieje w większości, będziesz go sprawdzał (for post in b..). Ta leniwość powinna uchronić Cię przed wykonywaniem niepotrzebnych zapytań, a także umożliwia np. Łańcuch zapytań i filtrów (możesz filtrować zestaw zapytań tak często, jak chcesz).

1

Zestaw kwerendy reprezentuje kolekcję obiektów z bazy danych. Może mieć zero, jeden lub wiele filtrów. Filtry zawężają wyniki zapytania na podstawie podanych parametrów. W terminach SQL, QuerySet jest równoznaczne z instrukcją SELECT, a filtr jest klauzulą ​​ograniczającą, taką jak WHERE lub LIMIT.

https://docs.djangoproject.com/en/1.8/topics/db/queries/

Powiązane problemy