首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError:'Playlist‘和'Playlist’的实例之间不支持'<‘,出现此错误

TypeError:'Playlist‘和'Playlist’的实例之间不支持'<‘,出现此错误
EN

Stack Overflow用户
提问于 2020-07-09 02:16:20
回答 1查看 47关注 0票数 0
代码语言:javascript
复制
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)

我正在尝试做一个搜索栏,一切正常,然后我开始在一个帖子创建页面上工作,然后它就出现了,如图所示

EN

回答 1

Stack Overflow用户

发布于 2020-07-09 04:00:30

sorted函数从给定的迭代器中获取项,并在它们之间进行比较。这样的比较可能是>< (就像您的例子一样)。

我猜get_video_queryset会返回一个可迭代的Playlist对象,而这些对象不支持比较--这就是为什么你会得到一个错误,说比较是不可能的。

您有3种可能性:

  1. 使用ORM的order_by()方法按特定的模型字段排序。示例:假设playlist有一个名字,你想按它排序,playlists =get_video_queryset(查询).order_by(‘in Django documentation’),你可以阅读更多关于排序名称的内容。如果您正在处理查询集,这是最好的解决方案,因为您可以通过数据库本身在一个查询中完成排序。

  1. sorted函数指定key=参数。key是一个函数,它将排序列表中的项作为参数,并应返回用于比较的值。阅读有关它的更多信息in Python docs

  1. Playlist类中实现rich comparison methods,以便可以直接比较该类的对象。

第一个解决方案对我来说似乎是最好的,因为如果 get_video_queryet 返回一个查询集,那么它是最干净、最快的查询集。

第三种选择似乎是最糟糕的,因为你在模型中添加了很多代码,而且它比前两种方法要复杂得多。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62801153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档