DjangoFilterBackend或者RestFrameworkFilterBackend在做指定字段查询时,默认为精确查询,如
api/v1/brand/brands/?name=huawei可以查到,api/v1/brand/brands/?name=hua是查不到的。
此时可以开启全局模糊查询,修改django settings配置文件:
REST_FRAMEWORK = {
'DATETIME_FORMAT': '%Y-%m-%d %H:%M:%S',
'DEFAULT_PAGINATION_CLASS': 'itom_cmdb.libs.frameworks.pagination.ItomPageNumberPagination',
'DEFAULT_AUTHENTICATION_CLASSES': [
],
'DEFAULT_FILTER_BACKENDS': [
'rest_framework_filters.backends.RestFrameworkFilterBackend',
'rest_framework.filters.SearchFilter',
'rest_framework.filters.OrderingFilter',
],
'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.AutoSchema',
'EXCEPTION_HANDLER': 'itom_cmdb.libs.frameworks.exception_handler.exception_handler',
'DEFAULT_METADATA_CLASS': 'itom_cmdb.libs.frameworks.simple_metadata.SimpleMetadataWithFilters',
}
#添加如下配置
#默认为exact
FILTERS_DEFAULT_LOOKUP_EXPR = 'contains'