2017-11-08 1 views
2

내 앱에는 양식이 있습니다. 양식에 따라 사용자가 하나 이상의 필터를 구성 할 수 있습니다. 내보기에서장고의 동적 필터

, 난 exemple 위해 가지고 :

query = Test.objects.filter(filter1 = request.post['filter1'], filter2 = request.post['filter2'], filter3 = request.post['filter3']) 

그래서, 때로는 필터 1, 필터 2 또는 filter3이 존재하지 수 있습니다.

필터가 없으면 필터를 무시하기 만하면됩니다.

"IF"조건이 많은 스크립트를 만들 수 있지만 스마트 솔루션이있을 수 있습니까?

도움 주셔서 감사합니다.

+1

인수가 포함 된 사전을 만들고 'filter'를'.filter (** your_dict) '와 같이 호출하십시오. –

답변

5

당신의 라인을 따라 뭔가를 할 수 : 목록 당신이 편집


에 의해

으로 필터링하고자하는 키의 목록입니다

filters = {} 

for key, value in request.post.items(): 
    if key in ['filter1', 'filter2', 'filter3']: 
     filters[key] = value 

Test.objects.filter(**filters) 

Thomas Junk을 사용하면 이해하기 쉽고 훨씬 더 깨끗하게 정리할 수 있다고 제안했습니다.

filters = { 
    key: value 
    for key, value in request.post.items() 
    if key in ['filter1', 'filter2', 'filter3'] 
} 

Test.objects.filter(**filters) 
+0

맛에 따라 이해력을 쓸 수 있습니다. 그러나 이것은 트릭을 수행하는 것 같습니다. –

+1

좋은 점 @ThomasJunk. 그것도 할 수있는 방법을 보여줬다. –

+0

위대한! 고맙습니다 ! – GrandGTO