首页 > 解决方案 > 如何使用“或”语句创建查询集

问题描述

我有一篇模型文章,在文章中我有标题和文章

我有搜索功能,搜索中的任何类型都必须让我找到标题或文章中包含搜索文本的所有文章

def searh(request):
    print(request.POST)
    kw = request.POST['search']
    articles = Article.objects.filter(title__contains=kw).filter(article__contains=kw)
    context = {'News':articles}
    return render(request, 'menu/search_results.html', context )

通过此查询不准确不会返回我两者中的 if

如何构造它?

  articles = Article.objects.filter(title__contains=kw).filter(article__contains=kw)

我的搜索表格

            <form method="POST" class="search-box" action="{% url 'search' %}">
                {% csrf_token %}
                <input  class="site-search" type="text" placeholder="{% trans 'Търси..' %}" name="search">
                <button type="submit"><i class="fa fa-search"></i></button>
            </form>

标签: djangodjango-queryset

解决方案


在我看来,你必须使用:

from django.db.models import Q

def search(request):
    kw = request.POST.get('search')
    articles = Article.objects.filter(Q(title__contains=kw) | Q(article__contains=kw))
    context = {'News':articles}
    return render(request, 'menu/search_results.html', context )

推荐阅读