Django如何合并两个QuerySet对象

2025-10-18 22:02:16

1、python 自带的模块itertools,可以使用 里面的chain函数

引入

from itertools import chain

Django如何合并两个QuerySet对象

2、现在我们有一个任务:

需要查询文章(根据文章的题目和文章的标签进行模糊查询)

这样我们就需要先根据文章题目查询,然后根据文章的标签进行查询(一个标签对应多个文章),然后合成一个QuerySet对象,最后去重

Django如何合并两个QuerySet对象

3、写逻辑并利用chain函数合并两个QuerySet对象

#逻辑

@login_required(login_url="/user/account/")  #登录核验

 

def search(request): #模糊查询(涵盖主题的title和标签)

 

   if request.method == "POST":

 

       key = request.POST.get('key').strip()

 

       context = {}

 

       titles = Title.objects.filter(title__icontains=key)

 

       tags = Tag.objects.filter(tag_name__icontains=key)

 

       for tag_obj in tags:

 

           titles = chain(titles,tag_obj.title_set.all())

 

       titles = list(set(titles))  #去重

 

       context["titles"] = titles

 

       context["key"] = key

 

       return render(request,'forum/search_list.html',context)

 

   else:

 

       return HttpResponseRedirect("/forum/")

Django如何合并两个QuerySet对象

4、实现结果

Django如何合并两个QuerySet对象

Django如何合并两个QuerySet对象

1、【1】引入chain函数:from itertools import chain

【2】使用 a = chain(QuerySet1,QuerySet2)来合并两个QuerySet对象

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢