如何在 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 中随机播放列表?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Django 中重复调用 views.py 中的函数?