django 中的多过滤器搜索不起作用
multi-filter search in django not working
有 3 个过滤器,即描述、类别和位置。对于描述,我想按公司名称、职位名称或职位描述搜索职位。
即使用户输入“公司名称和职位”,我也应该检索到一个不完全但有些接近的正确匹配项。我如何获得这个?
models.py
class Internship(models.Model):
recruiter = models.ForeignKey(Recruiter, on_delete=models.SET_NULL, null=True)
internship_title = models.CharField(max_length=100)
internship_mode = models.CharField(max_length=20, choices=MODE_CHOICES)
industry_type = models.CharField(max_length=200)
internship_desc = RichTextField()
class Recruiter(models.Model):
user = models.ForeignKey(User,on_delete=models.CASCADE)
company_name = models.CharField(max_length=100)
views.py
def user_search_internship(request):
if request.method == "POST":
internship_desc = request.POST['internship_desc']
internship_ind = request.POST['internship_industry']
internship_loc = request.POST['internship_location']
results = []
if internship_desc != "" and internship_desc is not None:
query_results = Internship.objects.filter(
Q(internship_title__icontains=internship_desc) |
Q(internship_desc__icontains=internship_desc) |
Q(recruiter__company_name__icontains=internship_desc)
)
if internship_ind !="" and internship_ind is not None:
query_results = Internship.objects.filter(
industry_type__iexact=internship_ind)
if internship_loc !="" and internship_loc is not None:
query_results = Internship.objects.filter(
recruiter__company_region__iexact=internship_loc)
if query_results:
for internship in query_results:
print(internship)
context = {
'query_results': query_results,
}
return render(request, 'internship_search_results.html', context)
您可以使用 Q
对象对过滤器进行 or
操作:
internships = internships.filter(
Q(internship_title__icontains=internship_desc) |
Q(internship_desc__icontains=internship_desc) |
Q(recruiter__company_name__icontains=internship_desc)
)
有 3 个过滤器,即描述、类别和位置。对于描述,我想按公司名称、职位名称或职位描述搜索职位。 即使用户输入“公司名称和职位”,我也应该检索到一个不完全但有些接近的正确匹配项。我如何获得这个?
models.py
class Internship(models.Model):
recruiter = models.ForeignKey(Recruiter, on_delete=models.SET_NULL, null=True)
internship_title = models.CharField(max_length=100)
internship_mode = models.CharField(max_length=20, choices=MODE_CHOICES)
industry_type = models.CharField(max_length=200)
internship_desc = RichTextField()
class Recruiter(models.Model):
user = models.ForeignKey(User,on_delete=models.CASCADE)
company_name = models.CharField(max_length=100)
views.py
def user_search_internship(request):
if request.method == "POST":
internship_desc = request.POST['internship_desc']
internship_ind = request.POST['internship_industry']
internship_loc = request.POST['internship_location']
results = []
if internship_desc != "" and internship_desc is not None:
query_results = Internship.objects.filter(
Q(internship_title__icontains=internship_desc) |
Q(internship_desc__icontains=internship_desc) |
Q(recruiter__company_name__icontains=internship_desc)
)
if internship_ind !="" and internship_ind is not None:
query_results = Internship.objects.filter(
industry_type__iexact=internship_ind)
if internship_loc !="" and internship_loc is not None:
query_results = Internship.objects.filter(
recruiter__company_region__iexact=internship_loc)
if query_results:
for internship in query_results:
print(internship)
context = {
'query_results': query_results,
}
return render(request, 'internship_search_results.html', context)
您可以使用 Q
对象对过滤器进行 or
操作:
internships = internships.filter(
Q(internship_title__icontains=internship_desc) |
Q(internship_desc__icontains=internship_desc) |
Q(recruiter__company_name__icontains=internship_desc)
)