[英]Django Q filter foreign key
我正在嘗試創建一個搜索,該搜索從兩個字段獲取輸入並使用這兩個字段進行搜索。 我知道如何過濾非外鍵,但嘗試過濾外鍵會出現錯誤“相關字段查找無效:國家/地區”
我希望作業返回過濾查詢和國家/地區的結果。 我怎樣才能最好地實現這一目標?
model:
class Job(models.Model):
title = models.CharField(max_length=50)
...
country = models.ForeignKey(
Country,
blank=True,
null=True,
help_text="Select if you're hiring within a specific "
"country",
on_delete=models.PROTECT
)
看法:
def jobs_search(request):
form = SearchForm(request.GET)
if form.is_valid():
cd = form.cleaned_data
jobs = Job.objects.filter(site_id=get_current_site(request).id) \
.filter(paid_at__isnull=False) \
.filter(expired_at__isnull=True) \
.filter(
Q(title__icontains=cd['query'], ) |
Q(description__icontains=cd['query']) & Q(country__country__icontains=cd['country'])
) \
.order_by('-paid_at')
meta_desc = 'Search Results'
title = 'Search Results'
context = {'meta_desc': meta_desc,
'title': title,
'form': form,
'jobs': jobs}
return render(request, 'job_board/jobs_index.html', context)
你可以試試這個
from django.db.models import Q
import operator
jobs = Job.objects.all()
query = reduce(operator.and_, [ Q(author__name__icontains=x) for x in jobs ] )
jobsfilter = jobs.filter( query )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.