Как сделать 2 списка кверисетов, но с разными фильтрами в одном представлении в Django
Я искал ответ на этот вопрос везде. Как сделать 2 списка кверисетов, но с разными фильтрами в одном представлении? Должен ли я сделать класс и отдельные функции внутри для каждого списка или одну функцию и сделать кверисеты 2 раза?
Если вы хотите добавить два одинаковых модельных набора запросов вместе, должно сработать следующее:
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 используется для сложения кверисетов вместе.
Если вам нужно передать два разных набора запросов в представление:
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)
Если два фильтра для одной модели
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)