Javascript 如何使用&;组合SearchQuery;Django postgres中从表单字段提交不确定多关键字的运算符

Javascript 如何使用&;组合SearchQuery;Django postgres中从表单字段提交不确定多关键字的运算符,javascript,django,python-3.x,postgresql,Javascript,Django,Python 3.x,Postgresql,我有一个表单,它有两个字段(标题、技能),以逗号分隔关键字。我们希望使用SearchQuery和'&'操作符搜索所有技能。所以,如果我的search\u vector是SearchVector('job\u title',),假设用户正在寻找例如Java、python、.net之类的东西 作为一种技能,我们可以编写类似以下内容的查询: PostedJobReq.objects.annotate(search=search\u vector).filter(SearchQuery('java')&

我有一个表单,它有两个字段(标题、技能),以逗号分隔关键字。我们希望使用
SearchQuery
'&'
操作符搜索所有技能。所以,如果我的
search\u vector
SearchVector('job\u title',)
,假设用户正在寻找例如Java、python、.net之类的东西 作为一种技能,我们可以编写类似以下内容的查询:

PostedJobReq.objects.annotate(search=search\u vector).filter(SearchQuery('java')&SearchQuery('python')&SearchQuery('.net'))
应该并且确实会给我们结果

但我的情况是,我们从
Formfield
so获得了诸如Ex.Java、python、.net之类的关键字

  • 我们不知道用户要搜索多少关键字
  • 这些关键词将是什么
  • 所以,当我甚至不知道用户要搜索多少关键字时,我该如何将多个
    搜索查询连接在一起呢。。
    我成功地列出了所有
    搜索查询
    ,但无法使用代码中的
    &
    模块将它们连接起来

    views.py

    complexadvsearch.html这是我的模板的外观和保存搜索表单的方式

    这就是我的模特的样子,简单的一些头衔和一些主要技能


    您可以组合SearchQuery()对象,如下所示:

    if filters:
        my_filter = SearchQuery(filters.pop())
    
        for f in filters:
            my_filter |= SearchQuery(f)
    
    与Q()对象一样:

    然后

    Stuff.objects.filter(f)
    
    这是Django ORM中非常酷的一部分

    但是,如果所有条件语句都使用
    &
    ,则根本不需要使用
    Q
    对象

    只要做:

    filter_list = [SearchQuery(i) for i in filters]
    Stuff.objects.filter(*filter_list)
    

    您可以像这样组合SearchQuery()对象:

    if filters:
        my_filter = SearchQuery(filters.pop())
    
        for f in filters:
            my_filter |= SearchQuery(f)
    
    与Q()对象一样:

    然后

    Stuff.objects.filter(f)
    
    这是Django ORM中非常酷的一部分

    但是,如果所有条件语句都使用
    &
    ,则根本不需要使用
    Q
    对象

    只要做:

    filter_list = [SearchQuery(i) for i in filters]
    Stuff.objects.filter(*filter_list)
    

    请编辑您的问题并将所有代码图片改为文本。请编辑您的问题并将所有代码图片改为文本。谢谢。它成功了!非常感谢你。它成功了!