我正在嘗試在我的網站上進行過濾關鍵字的搜索精簡程序,問題是有時候人們可能想要搜索多個關鍵字。問題是默認情況下,如果他們輸入「hello world」,它會搜索完整的短語,但我希望它將它分開,以便搜索「hello」和「world」。到目前爲止,我已將.split()
添加到關鍵字,並將它分開,但它阻止了我在查詢中使用__icontains
。任何人都可以提出最好的方法來做到這一點?乾杯!過濾多個關鍵字
代碼 -
def browse(request):
business_industry = request.GET.get('business_industry', '')
business_address_region = request.GET.get('business_address_region', '')
employment_type = request.GET.get('employment_type', '')
pay_rate = request.GET.get('pay_rate', '')
keywords = request.GET.get('keywords', '').split()
form = JobSearchForm(initial=request.GET)
filters = Q(active_listing=True)
if business_industry:
filters &= Q(business_industry=business_industry)
if business_address_region:
filters &= Q(business_address_region=business_address_region)
if employment_type:
filters &= Q(employment_type=employment_type)
if pay_rate:
filters &= Q(pay_rate=pay_rate)
if keywords:
filters &= Q(job_description__icontains=keywords) | Q(job_title__icontains=keywords)
job_listings = JobListing.objects.filter(filters).distinct().order_by('-listing_date')
context_dict = {
'joblistings': job_listings,
'form': form
}
return render(request, 'browse.html', context_dict)
編輯: 我被要求解釋爲什麼這個帖子是獨一無二的,其他的問題是詢問如何查詢自己比較他所有的模型字段。這是要求如何從單個字段過濾多個關鍵字。
的可能的複製[如何獲得Django的過濾器icontains多個字段(http://stackoverflow.com/questions/15045101/如何對獲得-更比一個場與 - Django的過濾icontains)。它不完全相同,但本質上是:手動循環。 – dhke