python - 相关字段查找无效: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)
我也尝试了不同的方法,但仍然显示相同的错误。
- 我试过
.filter(tags__in=query)
然后它显示
NoneType' 对象不可迭代
- 我试过
Tag.objects.filter(question__tags__icontains=query)
然后它显示
相关字段查找无效:icontains
任何帮助将非常感激。先感谢您。
解决方案
您应该指定您正在查找标签的名称,因此:
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
推荐阅读
- javascript - 在js中获取google api中多个工作表的所有数据
- reactjs - Gatsby react-helmet 不是服务器端渲染
- android - Google GCM 服务器域 gcm-http.googleapis.com 会在 4 月 11 日之后存在吗?
- c# - 无法加载文件或程序集“System.Configuration.ConfigurationManager”
- spring-boot - 使用firestore进行spring-boot rest api
- html - 如何停止在前端显示 html?
- angular - 在构建'找不到名称'排除''时出现lodash错误
- user-interface - 图像在颤动的 BoxDecoration 内有一个空白区域
- php - 如何从 phpmyadmin CURRENT_TIMESTAMP 仅获取小时和分钟
- php - 如何从不同的订单号计算平均值mysqli