개요
Django로 만든 웹 애플리케이션에서 DB 테이블의 특정 컬럼을 대상으로 검색하는 기능을 추가했다고 하자. 그렇다면 사용자가 검색어를 입력한 경우와 그렇지 않은 때에 따라서 동적 쿼리를 구성하여 데이터를 조회해야 한다. 이를 Django 뷰 함수에서 구현한다면 검색어 유무에 따라 filter()의 추가 여부를 결정하도록 작성한다.
def search(request): type_id = request.GET.get('type_id') state_id = request.GET.get('state_id') user_name = request.GET.get('user_name') kwargs = {} if type_id: kwargs = {'equipment_code__exact': type_id} if state_id: kwargs = {'state_code__exact': state_id} if user_name: kwargs = {'history__user_name__contains': user_name} search_result = BlahBlah.objects.all().filter(**kwargs) | cs |
참고
- Python - 파라미터 앞에 *, ** 의 의미? (*args, **kwargs)
참고. 실행환경
- OS : Windows 7 Professional K
- Python : v 2.7.5
- Django : v 1.9.7
0 댓글