Django 공식 문서 요약 (2) -- QuerySet

17625 단어 Django
문서 목록
  • Django QuerySet

  • 4
  • #1 환경 4
  • 4
  • #2 Field 찾기
  • #3 API

  • Django QuerySet
    본고의 주요 내용은 Django 프레임워크에서QuerySet에 대한 지식 소결이다
    #1 환경
    Python3.7.3
    Django==2.0.7
    

    #2 Field 찾기
    필드 찾기는 SQL WHERE 자문의 컨텐트를 지정하는 방법입니다.그것들은 QuerySet 방법의 키워드 인자 Filter (), exclude (), get () 로 지정됩니다.
    매개 변수
    설명
    xxx__exact
    정확히 = like'aaa'
    xxx__iexact
    정확함(대소문자 무시) = ilike'aaa'
    xxx__contains
    포함 = like'%aaa%'
    xxx__icontains
    포함 (대소문자 무시) = ilike '%aaa%' 이지만, SQLite에 있어서contains의 작용 효과는 icontains와 같다.
    xxx__gt
    보다 크다
    xxx__gte
    보다 크거나 같음
    xxx__lt
    보다 작음
    xxx__lte
    보다 작음
    xxx__in
    list 범위 내에 존재
    xxx__startswith
    로 시작하다
    xxx__istartswith
    대/소문자 무시
    xxx__endswith
    끝맺다
    xxx__iendswith
    대/소문자 무시
    xxx__range
    범위 내
    xxx__year
    날짜 필드의 년
    xxx__month
    날짜 필드의 월
    xxx__day
    날짜 필드의 일
  • exact

  • 정확히 일치합니다. 비교에 사용할 값 None을 제공하면 SQL NULL로 해석됩니다.
    예:
    Entry.objects.get(id__exact=14)
    Entry.objects.get(id__exact=None)
    

    SQL:
    SELECT ... WHERE id = 14;
    SELECT ... WHERE id IS NULL;
    
  • iexact

  • 대소문자를 구분하지 않고 정확히 일치한 값으로 비교할 수 있는 None을 제공하면 SQL NULL로 해석됩니다.
    예:
    Blog.objects.get(name__iexact='beatles blog')
    Blog.objects.get(name__iexact=None)
    

    SQL:
    SELECT ... WHERE name ILIKE 'beatles blog';
    SELECT ... WHERE name IS NULL;
    
  • contains

  • 대소문자 포함 구분.
    예:
    Entry.objects.get(headline__contains='Lennon')
    

    SQL:
    SELECT ... WHERE headline LIKE '%Lennon%';
    

    참고:
    SQLite는 대소문자를 구분하는 LIKE 문을 지원하지 않습니다.contains는 icontains SQLite와 같다.
  • icontains

  • 대소문자를 구분하지 않는 포함.
    예:
    Entry.objects.get(headline__icontains='Lennon')
    

    SQL:
    SELECT ... WHERE headline ILIKE '%Lennon%';
    
  • in

  • 주어진 교체 가능 중;보통 목록, 모듈, 조회 집합입니다.
    예:
    Entry.objects.filter(id__in=[1, 3, 4])
    

    SQL:
    SELECT ... WHERE id IN (1, 3, 4);
    

    또한 조회 세트를 사용하여 문자 값 목록 대신 동적 평가 값 목록을 사용할 수도 있습니다.
    inner_qs = Blog.objects.filter(name__contains='Cheddar')
    entries = Entry.objects.filter(blog__in=inner_qs)
    

    SQL:
    SELECT ... WHERE blog.id IN (SELECT id FROM ... WHERE NAME LIKE '%Cheddar%')
    
  • gt/gte/lt/lte

  • 예:
    Entry.objects.filter(id__gt=4)
    

    SQL:
    SELECT ... WHERE id > 4;
    
  • startswith

  • 대소문자의 시작을 구분하다.
    예:
    Entry.objects.filter(headline__startswith='Lennon')
    

    SQL:
    SELECT ... WHERE headline LIKE 'Lennon%';
    

    참고:
    SQLite는 대소문자를 구분하는 LIKE 문을 지원하지 않습니다.startswith는 SQLite에서 istartswith처럼
  • istartswith

  • 대소문자의 시작을 구분하지 않다.
    예:
    Entry.objects.filter(headline__istartswith='Lennon')
    

    SQL:
    SELECT ... WHERE headline ILIKE 'Lennon%';
    
  • endswith

  • 대소문자의 끝을 구분하다.
    예:
    Entry.objects.filter(headline__endswith='Lennon')
    

    SQL:
    SELECT ... WHERE headline LIKE '%Lennon';
    

    참고:
    SQLite는 대소문자를 구분하는 LIKE 문을 지원하지 않습니다.endswith는 마치 iendswith가 SQLite에 있는 것과 같다.
  • iendswith

  • 대소문자의 끝을 구분하지 않다.
    예:
    Entry.objects.filter(headline__iendswith='Lennon')
    

    SQL:
    SELECT ... WHERE headline ILIKE '%Lennon';
    
  • range

  • 범위 테스트 (포함).
    예:
    import datetime
    start_date = datetime.date(2019, 1, 1)
    end_date = datetime.date(2019, 3, 31)
    Entry.objects.filter(pub_date__range=(start_date, end_date))
    

    SQL:
    SELECT ... WHERE pub_date BETWEEN '2019-01-01' and '2019-03-31';
    
  • date

  • 날짜 필드에 값을 날짜로 변환합니다.다른 필드 검색을 링크할 수 있습니다.일자 값을 적용합니다.
    예:
    Entry.objects.filter(pub_date__date=datetime.date(2005, 1, 1))
    Entry.objects.filter(pub_date__date__gt=datetime.date(2005, 1, 1))
    

    SQL:
             SQL    ,                    。
    
  • year/month/day/week/week_day/quarter(1에서 4 사이의 정수치를 취하여 1년의 4분의 1을 표시한다.)

  • 날짜와 날짜 시간 필드에 정확한 연도가 일치합니다.다른 필드 검색을 링크할 수 있습니다.수년이 걸리다.
    예:
    Entry.objects.filter(pub_date__year=2005)
    Entry.objects.filter(pub_date__year__gte=2005)
    

    SQL:
    SELECT ... WHERE pub_date BETWEEN '2005-01-01' AND '2005-12-31';
    SELECT ... WHERE pub_date >= '2005-01-01';
    
  • time/hour/minute/second

  • datetime 필드에서 값을 시간으로 변환합니다.다른 필드 검색을 링크할 수 있습니다.날짜를 찾습니다.시간 값.
    예:
    Entry.objects.filter(pub_date__time=datetime.time(14, 30))
    Entry.objects.filter(pub_date__time__range=(datetime.time(8), datetime.time(17)))
    

    SQL:
             SQL    ,                    。
    
  • isnull

  • SQL 쿼리 및 개별에 해당하는 True 또는 False 중 하나를 사용합니다.IS NULLIS NOT NULL
    예:
    Entry.objects.filter(pub_date__isnull=True)
    

    SQL:
    SELECT ... WHERE pub_date IS NULL;
    

    #3 API
    API
    서식
    설명
    filter()
    filter(** kwargs)
    지정된 검색 매개변수와 일치하는 새 객체가 포함된 QuerySet으로 돌아갑니다.
    exclude()
    exclude(** kwargs)
    지정된 찾기 매개변수와 일치하지 않는 새 객체가 포함된 QuerySet으로 돌아갑니다.
    annotate()
    annotate(* args,** kwargs)
    표현식은 단순값으로 모델(또는 그 어떠한 관련 모델)의 필드에 대한 인용이나 대상의 대상과 관련된 대상을 통해 계산된 집합 표현식(평균값, 총화 등)QuerySet일 수 있다.
    order_by()
    order_by(*fields)
    기본적으로 a가 반환하는 결과는 모델의 옵션QuerySet에서 제시한 정렬 모듈에 따라 정렬됩니다.이 방법을 사용하면 모든 기초 위에서 그것을 덮어쓸 수 있습니다.
    reverse()
    reverse()
    이 Reverse () 방법을 사용하면 조회 집합 요소의 순서를 반전시킬 수 있습니다.reverse () 두 번째 호출은 정렬을 정상 방향으로 복구합니다.
    distinct()
    distinct(*fields)
    질의 결과에서 행을 중복 제거합니다.
    values()
    values(*fields, **expressions)

    좋은 웹페이지 즐겨찾기