【问题标题】:Django SearchVectorDjango 搜索向量
【发布时间】:2020-12-30 13:28:48
【问题描述】:

Django SearchVector 在命令行中给出了正常的结果,但它在我的 localhost:8000 上不起作用。我是这样说的。

def post_search(request):

     form = SearchForm()
     query = None
     results = []

     if 'query' in request.GET:
        form = SearchForm(request.GET)
        if form.is_valid():
            query= form.cleaned_data['query']
            results = Post.objects.annotate(search=SearchVector('title', 'body', 
           'slug')).filter(search='query')

     context = {
        'form' : form,
        'query' : query,
        'results' : results }

     return render(request, 'blog/search.html', context)

【问题讨论】:

  • 您是否收到错误消息?如果是这样,请添加它以使其更容易。
  • 没有。这是可怕的部分!
  • @AbdullahAtif:这并不可怕:它只是在搜索 字符串 query,所以不管你输入什么;结果将是搜索query的结果。
  • 顺便感谢您的打扰。我已经把它清除了。我第一次使用搜索卡住了 bcz。

标签: python django postgresql search


【解决方案1】:

您需要传递query,而不是'query' 字符串:

def post_search(request):
    form = SearchForm()
    query = None
    results = []
    
    if 'query' in request.GET:
        form = SearchForm(request.GET)
        if form.is_valid():
            query = form.cleaned_data['query']
            results = Post.objects.annotate(
                search=SearchVector('title', 'body', 'slug')
            ).filter(search=query)
            # query variable ↑

    context = {
        'form' : form,
        'query' : query,
        'results' : results
    }
    return render(request, 'blog/search.html', context)

【讨论】:

    【解决方案2】:

    您是否尝试过单过滤引号?这样试试filter(search=query)

    【讨论】:

      猜你喜欢
      • 2020-12-20
      • 1970-01-01
      • 1970-01-01
      • 2020-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多