如何在 django views.py 中随机播放列表?

Posted

技术标签:

【中文标题】如何在 django views.py 中随机播放列表?【英文标题】:how to shuffle list in django views.py? 【发布时间】:2015-02-12 23:24:05 【问题描述】:

我正在尝试随机播放 django.views 中的列表

views.py

import random

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

但输入此代码后,显示“'QuerySet' 对象不支持项目分配”的错误出现。没有项目分配怎么办?

【问题讨论】:

【参考方案1】:
Songs.objects.order_by('?')

返回一个随机排序的查询集

参见文档here

【讨论】:

请注意,对于某些数据库后端(例如 mysql),对于大量行,这可能是非常缓慢的解决方案,“按原样”获取行并在 RAM 中改组可能会更快。【参考方案2】:

将列表(此处为 song_list)转换为列表,然后随机播放....

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

没有更多的查询集错误

【讨论】:

此代码强制评估整个查询集,将整个表加载到内存中。见docs.djangoproject.com/en/dev/topics/db/queries/…

以上是关于如何在 django views.py 中随机播放列表?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Views.py 中运行子进程——Django

如何在 Django 中重复调用 views.py 中的函数?

Django - 如何在views.py中访问实例的值

Django:如何通过views.py更改值

如何在 Django 的 views.py 中引发 ValidationError(或做类似的事情)?

如何在views.py Django中返回ajax响应以及重定向