Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
309 views
in Technique[技术] by (71.8m points)

python - Django SearchVector

Django SearchVector is giving ok results in command line but it is not working on my localhost:8000. Here's how I put it.

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)

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You need to pass the query, not the 'query' string:

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)

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...