首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django中的多过滤器搜索不起作用

django中的多过滤器搜索不起作用
EN

Stack Overflow用户
提问于 2021-06-05 18:53:37
回答 1查看 24关注 0票数 1

有3个过滤器,即描述、类别和位置。对于描述,我想按公司名称、职称或职位描述来搜索职位。即使用户输入“公司名称和职位”,我也应该检索到不完全匹配但有点接近的正确匹配。我怎么才能得到这个?

models.py

代码语言:javascript
复制
 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

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-05 19:03:51

您可以使用Q对象对过滤器进行or操作:

代码语言:javascript
复制
    internships = internships.filter(
        Q(internship_title__icontains=internship_desc) |
        Q(internship_desc__icontains=internship_desc) |
        Q(recruiter__company_name__icontains=internship_desc)
    )
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67848800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档