django shell CRUD #2

eunji hwang·2020년 6월 6일
0

BACKEND-PYTHON-DJANGO

목록 보기
25/28
post-custom-banner

조건에 따른 조회

DB를 조회할때 기본 메서드만 사용할 경우 Queryset으로 데이터를 반환한다.
하지만 조건을 붙여서 조회할 경우 List형으로 데이터를 반환한다!

# Model 테이블의 id가 1인 레코드
Model.objects.filter(id=1) 

# Model 테이블의 col 컬럼이 hello로 시작하는 레코드
Model.objects.filter(col__startwith='hello')

# 올해생성된 데이터 조회
current_year = timezone.now().year
Model.objects.filter(pub_date__year=current_year)

# [M:n] 범위지정
Model.objects.all()[3:6]

# 컬럼별 오름/내림차순을 지정하여 범위지정 데이터를 가져올 수 있다.
Model.objects.all().order_by('col')[3:6]
  • pk, id 등 특정 컬럼 지정
  • [m,n] 인덱스 지정
  • .order_by 차순지정

추가 연산자

추가 연산자를 사용하기 위해선 컬럼명__추가연산자(속성) 식으로 사용한다.

  • 컬럼명__속성__속성__속성 : 과 같이 사용할 수 있다
    예:Model2.objects.filter(model1__pub_date__year=2020)

    : Model1 =1, Model2 = 다 의 관계에서 Model2의 데이터를 필터링해서 가져온다.
    FK인 Model1 의 pub_date 컬럼의 year 가 2020인 데이터를 가저온다.

  • __startwith : 시작 단어 지정

  • __endswith : 끝나는 단어 지정

  • __icontains : 문자열에 포함 단어 지정

OR, AND 조건

# 연산자 |, & 를 사용하기 위해 Q를 import 해야한다. 
from django.db.models import Q

Model.objects.all().filter(Q(컬럼=) | Q(컬럼=)) # or
Model.objects.all().filter(Q(컬럼=) & Q(컬럼=)) # and
profile
TIL 기록 블로그 :: 문제가 있는 글엔 댓글 부탁드려요!
post-custom-banner

0개의 댓글