Как использовать нарезку на набор запросов для формы Django? - PullRequest
0 голосов
/ 25 января 2019

Допустим, у меня есть модельер Django.Модель плеера имеет поданное имя «указывает» целочисленное поле.Мне нужно показать топ-10 игроков, упорядоченных по точкам из from.ModelChoiceField.

Набор запросов будет

Player.objects.all().order_by('-points')[:10]

Но если я использую нарезку на наборе запросов, который будет установлен в поле формы, онВызывает ошибку при нажатии кнопки отправки.

Cannot filter a query once a slice has been taken.

Есть ли способ решить эту проблему?

1 Ответ

0 голосов
/ 25 января 2019

Это, кажется, дубликат этого

Но ответы там должны прояснить для вас вещи

Взято из: https://docs.djangoproject.com/en/2.2/ref/models/querysets/

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

Также обратите внимание, что даже при нарезке неоцененного QuerySet возвращает другой недооцененный QuerySet, модифицируя его дальше (например, добавляя больше фильтры, или изменение порядка) не допускается, так как это не хорошо переведи на SQL, и он не будет иметь четкого значения.

...