使用Q过滤django数据

时间:2013-03-01 15:04:32

标签: python django django-q

category = request.GET.get('cat')
from_p = request.GET.get('from')
to_p = request.GET.get('to')

q = Q()
if category:
    q |= Q(category=category)
if from_p:
    q |= Q(price__gt=from_p)
if to_p:
    q |= Q(price__lt=to_p)

s = Sample.objects.filter(q)
  

www.example.com/?cat=0&from=300&to=600

如果首先是category - from_pto_p标准不起作用。怎么解决? 它仅适用于一个标准。我需要用户设置(例如)categoryfrom_p按这些标准搜索。

1 个答案:

答案 0 :(得分:0)

<强> EDITED

这是:

q_cat = Q(category=category) if category else Q()
q_from = Q(price__gt=from_p) if from_p else Q()
q_to = Q(price__lt=to_p) if to_p else Q()

q = q_cat | ( q_from  & q_to )

s = Sample.objects.filter(  q )