2014-12-14 3 views
-1

я пытаюсь перетасовать список в django.viewsКак перетасовать список в django views.py?

views.py

import random 

def all_songs(request): 
    songs_list = Songs.objects.all() 
    songs_list=random.shuffle(songs_list) 

, но после ввода этого кода показа ошибки «объект„QuerySet“не поддерживает назначение пункта» показывает вверх. как я могу сделать это без назначения элемента? не

ответ

2
Songs.objects.order_by('?') 

возвращает случайным образом упорядоченный QuerySet в

см Документах here

+2

обратите внимание на tha t это может быть очень медленное решение на большом количестве строк для некоторых резервных копий БД, например MySql, выборка строк «как есть» и перетасовка в ОЗУ может быть быстрее. – user3479125

-2

список новообращенного (здесь song_list) в список, а затем перетасовать его ....

def all_songs(request): songs_list = list(Songs.objects.all()) random.shuffle(songs_list)

не более ошибка запроса

+2

этот код принудительно оценивает весь запрос, загружая всю таблицу в память. см. https://docs.djangoproject.com/ru/dev/topics/db/queries/#querysets-are-lazy – sax

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