有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)发布于 2021-06-05 19:03:51
您可以使用Q对象对过滤器进行or操作:
internships = internships.filter(
Q(internship_title__icontains=internship_desc) |
Q(internship_desc__icontains=internship_desc) |
Q(recruiter__company_name__icontains=internship_desc)
)https://stackoverflow.com/questions/67848800
复制相似问题