Python 调整wagtail标记过滤器以包括一个运算符,以便可以搜索多个标记

Python 调整wagtail标记过滤器以包括一个运算符,以便可以搜索多个标记,python,django,search,tags,wagtail,Python,Django,Search,Tags,Wagtail,我的Wagtail模板上有一个工作搜索表单,可以根据页面的标记查找页面,但由于没有操作符(和或或),一次只能搜索一个标记 有人能告诉我如何修改此代码以允许多个标记搜索吗 型号.py tag_posts = PostsPage.objects.live().public().order_by('-first_published_at') if request.GET.get('tag', None): tags = request.GET.get('tag')

我的Wagtail模板上有一个工作搜索表单,可以根据页面的标记查找页面,但由于没有操作符(
),一次只能搜索一个标记

有人能告诉我如何修改此代码以允许多个标记搜索吗

型号.py

    tag_posts = PostsPage.objects.live().public().order_by('-first_published_at')


    if request.GET.get('tag', None):
        tags = request.GET.get('tag')
        tag_posts = tag_posts.filter(tags__slug__in=[tags])

        # Paginate all posts by 2 per page
        paginator = Paginator(tag_posts, 2)

        # Try to get the ?page=x value
        page = request.GET.get("page")
        try:
            posts = paginator.page(page)
        except PageNotAnInteger:
            posts = paginator.page(1)
        except EmptyPage:
            posts = paginator.page(paginator.num_pages)

        context["posts"] = tag_posts

        return context
搜索页面.html

            <form role="search" method="get" class="form-search" action="posts" method="get">
                <div class="input-group">
                    <input type="text" class="form-control search-query" name="tag" placeholder="What are you after?" title="Search for:" />
                    <span class="input-group-btn">
                      <button type="submit" class="btn btn-default" name="" id="searchsubmit" value="">
                        <span class="btn btn-default">GO</span>
                      </button>
                    </span>
                </div>
            </form>

您需要允许用户输入多个由逗号(或您选择的任何其他分隔符)分隔的标记。下面的代码允许逗号、分号和竖线用作分隔符。它不使用空格作为分隔符,因为taggit的标记可以是多个单词

我会改变:

tag_posts = PostsPage.objects.live().public().order_by('-first_published_at')

if request.GET.get('tag', None):
    tags = request.GET.get('tag')
    tag_posts = tag_posts.filter(tags__slug__in=[tags])
致:

请注意,上面选择的是不区分大小写的标记名,而不是slug值

还应:

import re
from django.db.models.function import Lower

非常感谢你的回复,丹。我已经尝试过你的建议,但现在恐怕没有结果(我也确保导入re)。你有什么想法吗?谢谢你更新你的答案Dan,我现在可以使用搜索添加多个标记,只要我使用逗号,没有空格。但是,我需要一种删除空白并自动添加逗号的方法,否则用户将不会得到任何结果。你认为这是可能的,还是我必须重新考虑我的方法,也许使用haystack/elasticsearch?
import re
from django.db.models.function import Lower