Python 对象请求的Django动态筛选器数
我怎样才能做这样的事情:Python 对象请求的Django动态筛选器数,python,django,django-models,Python,Django,Django Models,我怎样才能做这样的事情: products_list = Product.objects.all() for key in keywords: products_list = products_list.filter(name__icontains=q) 这不起作用。您正在筛选包含多个AND语句的列表,您需要OR语句。试着这样做: from django.db.models import Q products_list = Product.objects.all() orq = No
products_list = Product.objects.all()
for key in keywords:
products_list = products_list.filter(name__icontains=q)
这不起作用。您正在筛选包含多个AND语句的列表,您需要OR语句。试着这样做:
from django.db.models import Q
products_list = Product.objects.all()
orq = None
for key in keywords:
thisq = Q(name__icontains=q)
if orq:
orq = thisq | orq
else:
orq = thisq
products_list = products_list.filter(orq)
您可能会清理上面的代码,但想法是创建一个名为
orq
的变量,它基本上是Q(name_u-icontains='prod1')|Q(name_u-icontains='prod2')
实际上这不起作用products\u-list=Product.objects.all()
然后是products\u-list=products\u-list.filter(orq)
但是我可以直接做产品_list=Product.objects.filter(orq)
而且我工作得很好:)顺便说一句,我想如果我改变| with&我可以有一个and而不是一个ORout of interestProduct.objects.all()
检索所有产品products\u list.filter(name\u icontains=q)
将只过滤并返回满足查询的产品,这是Django进行过滤查询的方式吗?将数据库中的所有产品放入内存,然后过滤,而不是指定只返回所需数据的条件的查询?只是一个问题。实际上,你不能这样做product=product.objects.SOMETHING
和重用产品。要继续,你应该让所有的过滤器与解决方案一致。