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

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤