Подтвердить что ты не робот

Что такое Django QuerySet?

Когда я делаю это,

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

Я получаю это:

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

Когда я спрашиваю, что тип b,

>>> type(b)

Я получаю это:

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

Что это значит? Это тип данных вроде dict, list и т.д.?

Будет оценен пример того, как я могу построить структуру данных, как QuerySet.

Я хотел бы знать, как Django строит этот QuerySet (кровавые подробности).

4b9b3361

Ответ 2

django queryset, как его название говорит, в основном набор (sql) запросов, в вашем примере выше print(b.query) покажет вам sql запрос, сгенерированный из ваших вызовов django filter.

Так как наборы запросов ленивы, запрос к базе данных выполняется не сразу, а только при необходимости - при оценке набора запросов. Это происходит, например, если вы вызываете его метод __str__ при его печати, если вы вызываете list() для него, или, что происходит в основном, вы итерируете его (for post in b..). Эта лень должна уберечь вас от выполнения ненужных запросов, а также позволяет, например, связывать наборы запросов и фильтры (вы можете фильтровать набор запросов так часто, как хотите).

Ответ 3

QuerySet представляет собой набор объектов из вашей базы данных. Он может иметь нулевой, один или несколько фильтров. Фильтры сужают результаты запроса на основе данных параметров. В терминах SQL QuerySet соответствует выражению SELECT, а фильтр является ограничивающим предложением, например WHERE или LIMIT.

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

Ответ 4

QuerySet - это список объектов данной модели, QuerySet позволяет считывать данные из базы данных.