def home(request):
context = {
'': Playlist.objects.all()
}
query = ""
if request.GET:
query = request.GET['q']
context['query'] = str(query)
playlists = sorted(get_video_queryset(query))
context['playlists']=playlists
return render(request, "video/home.html", context)我正在尝试做一个搜索栏,一切正常,然后我开始在一个帖子创建页面上工作,然后它就出现了,如图所示
发布于 2020-07-09 04:00:30
sorted函数从给定的迭代器中获取项,并在它们之间进行比较。这样的比较可能是>或< (就像您的例子一样)。
我猜get_video_queryset会返回一个可迭代的Playlist对象,而这些对象不支持比较--这就是为什么你会得到一个错误,说比较是不可能的。
您有3种可能性:
order_by()方法按特定的模型字段排序。示例:假设playlist有一个名字,你想按它排序,playlists =get_video_queryset(查询).order_by(‘in Django documentation’),你可以阅读更多关于排序名称的内容。如果您正在处理查询集,这是最好的解决方案,因为您可以通过数据库本身在一个查询中完成排序。sorted函数指定key=参数。key是一个函数,它将排序列表中的项作为参数,并应返回用于比较的值。阅读有关它的更多信息in Python docsPlaylist类中实现rich comparison methods,以便可以直接比较该类的对象。第一个解决方案对我来说似乎是最好的,因为如果 get_video_queryet 返回一个查询集,那么它是最干净、最快的查询集。
第三种选择似乎是最糟糕的,因为你在模型中添加了很多代码,而且它比前两种方法要复杂得多。
https://stackoverflow.com/questions/62801153
复制相似问题