python - Django 在 TextField 中搜索
问题描述
我正在尝试在 Django 中搜索查询,icontains
查找适用于title
(CharField)但不适用于content
(TextField)。我想搜索查询是否存在于帖子的标题或内容中。
我用来测试查询的模型:(models.py)
class BlogPost(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
title = models.CharField(max_length=120, blank=True)
content = models.TextField(blank=True)
timestamp = models.DateTimeField(auto_now_add=True)
def __str__(self):
return '{} - {}'.format(self.title, self.user.username)
这是代码:(views.py)
from django.db.models import Q
...
class BlogPostAPIView(mixins.CreateModelMixin, generics.ListAPIView):
...
def get_queryset(self):
qs = BlogPost.objects.all()
query = self.request.GET.get('q')
if query is not None:
qs = qs.filter(Q(title__icontains=query) | Q(content__icontains=query)).distinct()
return qs
这是我在进行查询时遇到的错误:
异常类型:字段错误
异常值:TextField 的不支持查找“icontains”或不允许加入该字段。
解决方案
您可以使用
结果 = Cancer.objects.filter(abstract__contains='cancer').values_list('title', 'document_id') str(results.query)
'SELECT "patents_cancer"."title", "patents_cancer"."document_id" FROM "patents_cancer" WHERE "patents_cancer"."abstract"::text LIKE %cancer%'
或者你可以使用Search
像TextField
Entry.objects.filter(body_text__search='Cheese')
https://docs.djangoproject.com/en/2.1/ref/contrib/postgres/search/
推荐阅读
- r - 我在使用包 openxlsx 从 R 将图像粘贴到 Excel 中时遇到错误
- c# - 如何通知对象实例之外的属性?
- firebase - 如何在没有错误的情况下将 Nativescript 安装到 Sidekick NativeScript 应用程序?
- gradle - 为什么在 Gradle 中尝试使用自定义 Kotlin 编译器插件时会出现 UnknownPluginException?
- java - 为接口方法 Java 实现子类型
- jquery - 点击jquery多选选项,所有选项都消失了
- r - 即使在 Rcpp 中为 NULL,如何获取列名?
- java - 一个验证器正确重定向,另一个根本没有重定向?
- java - Jframe中的输入法?
- configuration - Liferay DXP 中的 ConfigurationAPI 可以用于 Plugin sdk portlet 吗?