2016-11-19 4 views
0

В Джанго QuerySet документ (https://docs.djangoproject.com/en/1.10/ref/models/querysets/), он говорит: «Внутренне QuerySet может быть построена, фильтруют, нарезанный, и вообще ходило фактически не попав в базу данных. Нет базы данных активности на самом деле не происходит до тех пор, пока что-то сделать, чтобы оценить запрос. И затем в нем говорится: «Вы можете оценить QuerySet следующими способами: Итерация/Нарезка/...." ,Queryset оценивается при нарезке?

Итак, мой вопрос: «оценивается ли Queryset при нарезке».

ответ

2

Полный абзац объясняет, когда нарезка будет оценивать QuerySet, а когда нет (курсив мой):

  • нарезания. Как объясняется в Limiting QuerySets, QuerySet можно нарезать, используя синтаксис массива Python. Нарезка необоснованного QuerySet обычно возвращает еще один неопытный QuerySet, но Django будет выполнить запрос базы данных, если вы используете параметр «step» синтаксиса среза и вернете список. Нарезка QuerySet, которая была оценена, также возвращает список.

Джанго только оценить QuerySet при использовании параметра шага, например queryset[::2], так как это не может быть переведен в запросе SQL. В других случаях нарезка необоснованного запроса будет возвращать еще один неоплаченный запрос, а Django добавит к запросу LIMIT и/или OFFSET.

+0

Большое спасибо. Это сопутствует мне долгое время. >< – hochun

 Смежные вопросы

  • Нет связанных вопросов^_^