Programming/Python

[Django] 다중 필터 적용

BadaGreen_Kim 2021. 10. 29. 11:07

가끔 Search Bar 형태로 Django Queryset을 다중 필터 적용을 해야할 경우가 있다. 이럴경우 정형화된 Filter를 넣어믄 좋겠지만 가끔 조건에 따라 가변적으로 검색 Queryset을 작성해줘야하기 때문에 대략 난감하다. 그러다 문득 좋은 정리가 잘되어있는 블로그가 있어 이부분을 참조하고 공유한다.

 

다중 필터❓

일단 다중 필터란 여러가지 조건문을 넣어서 사용하게 되는데 가끔 가변적으로 조건에 따라 여러 조건검색 필터를 구현하는것이다. 

 

예로들어 아래와 같이 되어있는부분이 있는데 검색조건을 커스텀하여 원하는 조건에 따라 적용되게 해주는것을 말한다.

 

 

 

그래서 이와같은 조건에 따라 Queryset Filter를 넣어서 사용하게 된다.  이와같은 시나리오대로 Backend에서 코드를 작성하여 같다.

 

조건에 따라 Empty 체크후 Q 스택에 조건 필터를 쌓아놓고 한번에 검색할 수 있도록하면 된다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Age = request.GET.getlist('Age'None)
Money = request.GET.getlist('Money'None)
Jobs = request.GET.get('Jobs'None)
 
q=Q()
if Age:
    q &= Q(category_id = Age)
if Money:
    q &= Q(color_name__in = Money)
if Jobs:
    q &= Q(size__name__in = Jobs)
 
 
result = Houst.objects.filter(q).order_by(ordering)
cs