Django에서 동적 쿼리를 생성하는 방법

개요

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


참고

 - Truth Value Testing

 - Python - 파라미터 앞에 *, ** 의 의미? (*args, **kwargs) 


참고. 실행환경

  - OS : Windows 7 Professional K

  - Python : v 2.7.5

  - Django : v 1.9.7



댓글 쓰기

0 댓글