首页 > 解决方案 > 相关字段查找无效:​​icontains - While Search Tag

问题描述

我正在构建一个 BlogApp,我正在尝试实现一个搜索字段,它将搜索(过滤)输入tag

当我尝试访问该页面时,它会一直显示

相关字段查找无效:​​icontains

模型.py

class BlogPost(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    title = models.CharField(max_length=30,default='')
    tags = TaggableManager()

视图.py

from taggit.models import Tag

def search_page(request):
    query = request.GET.get('p')
    object_list = BlogPost.objects.filter(tags__icontains=query)

    context = {'posts': object_list, 'query': query}
    return render(request, 'search.html', context)

我也尝试了不同的方法,但仍然显示相同的错误。

NoneType' 对象不可迭代

相关字段查找无效:​​icontains

任何帮助将非常感激。先感谢您。

标签: pythondjangodjango-viewstags

解决方案


您应该指定您正在查找标签的名称,因此:

object_list = BlogPost.objects.filter(tags__name__icontains=query)

您应该仅在有查询时进行过滤,因此:

from taggit.models import Tag

def search_page(request):
    query = request.GET.get('p')
    object_list = BlogPost.objects.all()
    if query is not None:
        object_list = object_list.filter(tags__icontains=query)
    context = {'posts': object_list, 'query': query}
    return render(request, 'search.html', context)

您可能还想使用q而不是p查询参数名称。


推荐阅读