繁体   English   中英

如何在 Django 的同一视图中制作 2 个查询集列表但使用不同的过滤器

[英]How to make 2 queryset lists but with different filter in the same view in Django

我一直在到处寻找这个问题的答案。 如何在同一视图中制作 2 个查询集列表但使用不同的过滤器? 我应该为每个列表或一个 function 制作一个 class 和单独的函数并进行两次查询集吗?

如果你想 append 两个相同的 model 查询集一起,以下应该工作:

queryset_one = mymodel.objects.filter(id__range=[0,99])
queryset_two = mymodel.objects.filter(name__in=[john,jane])

full_queryset = queryset_one | queryset_two

pipe 运算符用于 append 查询集。

如果您需要将两个不同的查询集传递到视图中:

def index(request):
    queryset_one = mymodel.objects.filter(id__range=[0,99])
    queryset_two = mymodel.objects.filter(name__in=[john,jane])
    context{
        "queryset_one":queryset_one,
        "queryset_two":queryset_two
    }
    return render(request,'mypage.html',context)

如果您的两个过滤器为一个 model

from django.db.models import Q

Model.objects.filter(Q(x=10) | Q(active=False))

如果对于两个模型

Q1 = model.object.filter(x=10)
Q2 = model_2.object.filter(active=False)
Q2_Q1 = Q1.union(Q2)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM