Django 공식 문서 요약 (2) -- QuerySet
17625 단어 Django
4
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
날짜 필드의 일
정확히 일치합니다. 비교에 사용할 값 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;
대소문자를 구분하지 않고 정확히 일치한 값으로 비교할 수 있는 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;
대소문자 포함 구분.
예:
Entry.objects.get(headline__contains='Lennon')
SQL:
SELECT ... WHERE headline LIKE '%Lennon%';
참고:
SQLite는 대소문자를 구분하는 LIKE 문을 지원하지 않습니다.contains는 icontains SQLite와 같다.
대소문자를 구분하지 않는 포함.
예:
Entry.objects.get(headline__icontains='Lennon')
SQL:
SELECT ... WHERE headline ILIKE '%Lennon%';
주어진 교체 가능 중;보통 목록, 모듈, 조회 집합입니다.
예:
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%')
예:
Entry.objects.filter(id__gt=4)
SQL:
SELECT ... WHERE id > 4;
대소문자의 시작을 구분하다.
예:
Entry.objects.filter(headline__startswith='Lennon')
SQL:
SELECT ... WHERE headline LIKE 'Lennon%';
참고:
SQLite는 대소문자를 구분하는 LIKE 문을 지원하지 않습니다.startswith는 SQLite에서 istartswith처럼
대소문자의 시작을 구분하지 않다.
예:
Entry.objects.filter(headline__istartswith='Lennon')
SQL:
SELECT ... WHERE headline ILIKE 'Lennon%';
대소문자의 끝을 구분하다.
예:
Entry.objects.filter(headline__endswith='Lennon')
SQL:
SELECT ... WHERE headline LIKE '%Lennon';
참고:
SQLite는 대소문자를 구분하는 LIKE 문을 지원하지 않습니다.endswith는 마치 iendswith가 SQLite에 있는 것과 같다.
대소문자의 끝을 구분하지 않다.
예:
Entry.objects.filter(headline__iendswith='Lennon')
SQL:
SELECT ... WHERE headline ILIKE '%Lennon';
범위 테스트 (포함).
예:
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';
날짜 필드에 값을 날짜로 변환합니다.다른 필드 검색을 링크할 수 있습니다.일자 값을 적용합니다.
예:
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 , 。
날짜와 날짜 시간 필드에 정확한 연도가 일치합니다.다른 필드 검색을 링크할 수 있습니다.수년이 걸리다.
예:
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';
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 , 。
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)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django 라우팅 계층 URLconf 작용 및 원리 해석URL 구성(URLconf)은 Django가 지원하는 웹 사이트의 디렉토리와 같습니다.그것의 본질은 URL과 이 URL을 호출할 보기 함수 사이의 맵표입니다. 위의 예제에서는 URL의 값을 캡처하고 위치 매개 변수로...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.