【发布时间】:2020-12-08 19:32:21
【问题描述】:
我正在尝试创建一个从两个字段中获取输入并同时使用这两个字段进行搜索的搜索。我知道如何过滤非外键,但尝试过滤外键会出现错误“相关字段查找无效:国家/地区”
我希望作业返回过滤查询和国家/地区的结果。我怎样才能最好地做到这一点?
型号:
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)
【问题讨论】: