Django Admin 페이지에서 하나의 모델을 선택하면 아래와 같이 필터는 없고 데이터만 쭉 나열된 것을 볼 수 있죠.




여기에 Filter 2개를 추가해보면 좋을 것 같네요. 

하나의 Filter는 Status를 True / False 를 선택적으로 볼 수 있도록 하는 것을 하고요. 또 다른 하나는 item_code를 특정 값 이하만 볼 수 있도록 하는 Filter를 달아보겠습니다. 



첫 번째 것은 정말 쉬운 것 같아요. admin.py에 아래와 같이 추가하면 끝입니다. 




BooleanFieldListFilter를 하나 추가한 것이 끝입니다. 


결과는 아래와 같이 오른쪽에 Filter가 추가되어 나타납니다.




  이 필터를 누르면 데이터가 필터링되어서 보여지죠. 많은 데이터가 있고 내가 원하는 결과를 빠르게 보기 위해서는 적절한 필터를 붙여두는 것이 시간을 많이 절약할 수 있는 방법입니다. 





2번째 필터를 붙여보겠습니다. 

사실 위에 데이터에서는 별로 필요없지만 이렇게 필터를 붙여넣을 수 있구나 정도만 파악하면 될 것 같아요. 저는 정리하는 차원이기도 하고요. 

일단 제일 좋은 예제는 Django Document에 나와 있습니다. 아래 URL을 첨부했어요.


https://docs.djangoproject.com/en/1.11/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_filter


위 문서에 SimpleListFilter 요걸 보시면 됩니다. 

저는 위에 그림에서 나타낸 데이터에서 item_code가 10010 이하인 것만 볼 수 있도록 하는 필터를 추가해보겠습니다. 



일단 결과부터 ItemCodeListFilter라는 것을 달았고요. item_code가 10010 이하인 것을 뽑아주는 것과 10011 이상인 것을 필터링해주는 것이 있습니다. 숫자는 여러 개로 늘리는 것이 가능하지만 이런 예제에는 2개가 적당하죠. 




아래 그림은 10011 이상인 것을 보여주는 것이고요.





저도 Document를 따라한 것이라서 Document와 다르지는 않습니다.

그래도 참고차 정리차 그림으로 대체합니다. !



parameter_name은 필터링에 사용될 column name을 적어주시면 됩니다. 


lookups는 admin 페이지에 보여질 필터들 이라고 생각하시면 됩니다. 

queryset은 위 필터들을 눌렀을 때 어떻게 필터링할 것인가를 작성하는 부분입니다. 

작명한 필터 이름들과 실제 동작하는 필터 코드가 잘 맞아야겠죠 !!



첫 번째 필터와 마찬가지로 ItemCodeListFilter라는 녀석을 list_filter에 추가해주면 끝입니다. 




+ Recent posts