提供给使用strak组件接口,可以自定制搜索条件为模糊搜索或者精准搜索
原理就是利用orm的查询语句得到符合搜索条件的数据,并返回给前端页面
query_test = self.model_class.objects.filter(Q(name__contains=‘t‘) | Q(age=21)) print(query_test)
其本质就是通过语句在数据库中查询到符合条件的数据并返回给页码
UserInfo.objects.filter(name__contains=‘祥祥‘)
contains包含匹配, 就是模糊查询的本质 利用双下划线__ 去数据库中匹配指定字段的关键字
当我们搜索语句不仅仅只有一个条件的时候,比如 名字中包含什么,或者年龄大于多少 这种组合搜索的时候,我们就需要利用Q的查询方法,因为默认的filter过滤是并且的链接方式
所以我们利用Q语句将搜索条件变为或者
Q对象的用法:
from django.db.models import Q
conn = Q() # 生成Q对象
conn.connector = ‘OR‘ # 将Q的条件设置为OR conn.children.append((name__contains, ‘alex‘)) # !注意,搜索条件和用户输入的搜索内容必须以元祖的形式一起append到Q对象的children中去 固定用法
conn.children.append((age, 22)) # 元祖的形式
data = UserInfo.objects.filter(conn) # 将Q对象为filter条件
上面的例子就是Q对象搜索的经典例子,请千万牢记,可以多次利用
原文:https://www.cnblogs.com/aaaajayheng1990/p/10954466.html