如何使用Django rest framework searchfilter执行or操作,而不是对查询参数执行and操作

2024-03-29 10:05:34 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的密码

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']

搜索\字段在表格的“网站”、“标题”、“说明”和“组织”列中搜索关键字

这就是我发送邮递员请求的方式

http://127.0.0.1:8000/?search=Belgian,Services

现在,我的代码执行一个结束操作。它返回那些同时包含比利时服务关键字的行,而我希望它在我在搜索字段中提供的4列中的任意一列中返回那些只包含比利时服务关键字的行,或者同时包含这两个关键字的行

我怎样才能做到呢

非常感谢你的帮助。 我试过这个,但对我不起作用


1条回答
网友
1楼 · 发布于 2024-03-29 10:05:34

事实上,您需要某种类型的“或”搜索过滤器(“这两个”都包含在“任何字段中的比利时或(xor?)任何字段中的服务”中”)

您应该尝试this solution并进行一些小的修改:

query = query | Q(website__contains=term) | Q(title__contains=term) | Q(description__contains=term) | Q(organization__name__contains=term)

相关问题 更多 >