python - 如何使用 django rest 框架搜索过滤器而不是对查询参数进行操作或操作
问题描述
这是我的代码。
class op_ViewSet(viewsets.ModelViewSet) :
http_method_names = ['get']
queryset = Op.objects.all().filter()
serializer_class = op_Serializer
pagination_class = MyPagination
filter_backends = [DjangoFilterBackend , SearchFilter , OrderingFilter]
filter_class = op_filter
search_fields = ['website' , 'title' , 'description' , 'organization__name']
search_fields 在表的网站、标题、描述和组织列中搜索关键字。
这就是我发送邮递员请求的方式。
http://127.0.0.1:8000/?search=Belgian,Services
现在我的代码执行结束操作。它返回那些同时包含比利时语、服务关键字的行,而我希望它返回那些仅包含比利时语、仅服务或两者都包含在我在搜索字段中提供的 4 列中的行。
我怎样才能实现它?
非常感谢您的帮助。我在此处尝试了此输入链接描述,但对我不起作用
解决方案
实际上,您需要某种“或”搜索过滤器(“它们都”包含在“任何领域的比利时人或任何领域的(xor ?)服务”中)。
您应该尝试此解决方案并稍作修改:
query = query | Q(website__contains=term) | Q(title__contains=term) | Q(description__contains=term) | Q(organization__name__contains=term)
推荐阅读
- python - 你如何引用 python 包的其他分支?
- django - Django Raw Field 通过多层次的关系
- pyspark - 当我编写 Pyspark 代码以连接 Snowflake 时出现错误
- selenium - 未找到带有定位器的元素。尝试过 Xpath 和 CSS 选择器
- c# - 枚举舞台上的所有对象 - 统一
- python - 生成带有限定符的查询字符串
- microservices - 没有云的负载平衡文件访问
- javascript - 将 Pickle 对象转换为 JS 可读的代码?
- sql - 分区 Athena 表中的子查询
- entity-framework - 如何做 EntityFramework InsertOrUpdateOrDelete