我有兩個Django過濾器,我想用來過濾帖子,但一個帖子可以有很多類別,所以我已經把類別放在URL列表中。現在問題來了 - 我需要根據帖子的標題和類別進行過濾,但是我需要以某種方式進行過濾,以便使我能夠檢查所選類別的聯合。以下是當前的代碼:Django草垛過濾
sqs = SearchQuerySet().all()
if 'title' in request.GET and request.GET['title'] != '':
sqs = sqs.filter_and(title=request.GET['title'])
if 'category' in request.GET and request.GET['category'] != '':
catlist = request.GET.getlist('category')
for i in catlist:
sqs = sqs.filter_or(category=i)
非常感謝您的幫助!
更多信息:Django的1.4.1,Django的草堆1.2.7
編輯:
我做了什麼,你的建議(使用__in):
if 'title' in request.GET and request.GET['title'] != '':
sqs = sqs.filter_and(title=request.GET['title'])
if 'category' in request.GET and request.GET['category'] != '':
catlist = request.GET.getlist('category')
sqs = sqs.filter_or(category__in=catlist)
但仍然沒有運氣 - 我無法按字段和類別進行搜索。只按類別搜索似乎正在工作,但當這兩個字段一起輸入時,它們不起作用。
我用了第二種方案,但沒有運氣。看到我編輯的問題。感謝您的回答。 – dark4p
看起來標題不在任何這些類別中。如果將兩者結合起來,則這些項目必須同時具有列表中的一個類別和該標題。如果您只需滿足這些條件中的任意一個,則使用'Q(field = value)| Q(...)...' –
另外一個建議使用shell進行調試。 –