Django DB 세팅하기

Jooss·2023년 8월 14일

django

목록 보기
5/5

2020-06-16 github.io에서 작성

django는 일반적인 sql query문 대신 django에서 지원하는 queryset을 사용하여 데이터베이스에서 자료를 가져 올 수 있습니다.
오늘의 TIL은 진행중인 프로젝트에 기능추가를 할 겸 queryset api를 간단하게 정리하고자 합니다.
자세한 내용은 Django queryset 공식문서을 참조해주세요

QuerySet

queryset을 사용하기 위해서는 <modelname>.objects.func()의 형식으로 데이터를 불러와야 합니다.

모든 데이터 가져오기

query_response = TABLE_NAME.objects.all()

가져온 데이터는 object형식으로 바로 사용 할 수 없습니다.
view에서 HttpResponseJosnResponse로 리턴을 시키기 위해서 dict형태로 변환시켜줍니다.

JsonResponse(query_response.values()[0])
  • filter()

    TABLE_NAME.objects.filter(FIELD_NAME="value")

    만약 두개 이상의 조건문을 지정해야 할 경우

    from django.db.models import Q
    TABLE_NAME.objects.filter(Q(FIELD_NAME="value") | Q(FIELD_NAME="value"))
  • exclued()
    filter와 반대로 조건에 해당하지 않는 값을 가져옵니다.

    TABLE_NAME.objects.filter(FIELD_NAME="value")

filter사용 시 문자열 or 숫자/시간/날짜필드 조건 사용법

필드명을 바로 사용하는 것이 아니라 필드명 뒤에 __조건 을 사용하여 이상,이하 등의 조건을 줍니다.

  • 숫자/시간/날짜
    조건문은 약어를 사용하여 표현합니다.

    l is less
    g is greater
    t is than
    e is equal
    • __lt FEILD_NAME < value

    • __lte : FIELD_NAME <= value

    • __gt : FIELD_NAME > value

    • __gte : FIELD_NAME >= value

    • 사용예시

        TABLE_NAME.objects.filter(FIELD_NAME__lt = date(yy,mm,dd))
  • 문자열
    문자열 또한 숫자/시간/날짜와 마찬가지로 단어의 조합을 이용하여 사용합니다.

    __startswith # value로 시작하는 데이터
    __endswith # value로 끝나는 데이터
    __contains # value가 포함되는 데이터
    __istartswith # 대소문자를 구분하지 않는 __startswith
    __iendswith # 대소문자를 구분하지 않는 __endswith
    __icontains # 대소문자를 구분하지 않는 __contains
    • 사용예시

      TABLE_NAME.objects.filter(FIELD_NAME_startswith="value")    

Queryset 최적화에 관련된 이야기

Django에서 쿼리셋 효과적으로 사용하기

Reference

profile
개발자 세상을 여행중인 히치하이커입니다.

0개의 댓글