我需要按一定顺序搜索并退回我的产品,并有一个正则表达式来处理搜索,问题是,我不确定如何将其应用于DRF search_filters中的搜索字段。
这是我想使用"^(?P<name>\w+ ?,?)"
的正则表达式-任何以输入文本开头并且可能以空格或逗号结尾的名称。如果可能的话,我还想应用标记化排序,因此在“ ricenoodle”之前返回“ rice”,“ rice”和“ rice”。
我正尝试使用像search_fields = ['^(?P<name>\w+ ?,?)']
这样的正则表达式,但我得到的只是一个类似Cannot resolve keyword '(?P<name>\w+ ?,?)$' into field
的错误。
DRF指出,要使用正则表达式,我需要使用“ $ name”,并具有指向django文档的链接,该文档包含有关如何使用正则表达式(https://docs.djangoproject.com/en/2.0/ref/contrib/admin/#django.contrib.admin.ModelAdmin.search_fields)构建搜索字段的0信息。
我应该如何构造search_fields
?
答案 0 :(得分:0)
默认情况下,DRF将针对您的搜索字段返回不区分大小写的部分匹配,并且搜索参数可能包含多个搜索词,应将其用空格和/或逗号分隔。如果使用多个搜索词,则仅当所有提供的词都匹配时,对象才会在列表中返回。
示例:
search_fields = ('=username', '=email')
您可以找到更多搜索模式以及如何使用here