Django QuerySet API 메소드

Hoontae.KIM·2021년 7월 22일
1
post-thumbnail

django의 QuerySet method

QuerySet API에서 제공하는 자주 사용되는 Model method 이해하고
각각 method 실행 결과로 QuerySet이 반환되는 경우와 그렇지 않은 경우 파악하기 위해 공부했던 C.R.U.D 의 대표적인 메소드로 확인해 보겠다.

  • Model method 종류
    all() , filter() , exclude() , values() , values_list() , get() , create() ,
    count() , exists() , update() , delete() , first() , last() , save() , bulk_create()..
  • QuerySet을 반환하는 경우
    <QuerySet [<Category: Category object (1)>, <Category: Category object (2)>]>
  • 그렇지 않은 경우
    <Category: Category object (1)> , 9 , True ..

시작 전 작성한 모델 클래스 import하기 (django shell 사용)

# 예로 사용하는 클래스
class Actor(models.Model):
    first_name = models.CharField(max_length=45)
    last_name = models.CharField(max_length=45)
    date_of_birth = models.DateField(null=True)

    class Meta:
        db_table = 'actors'

from movies.models import * =movies 라는 어플의 클래스를 import한다는것인데 여기서 뒤에 별은 전체 클래스를 의미한다.

create 메소드

create( ), save( ), bulk_create( )


위 create 메소드를 이용하여 추가 된 내역을 알 수 있다.

read 메소드

get( ), all( ), filter( ), exclude( ), values( ), values_list( )

위 메소드을 입력했을때의 값들을 알 수 있다. 맨 아래 12번 값을 보면 에러가 발생했는데 values_list( )의 경우 QuerySet이 반환되는 경우이기에 7번을 보면 get메소드는 그 값만을 불러오는 QuerySet을 반환하지 않는 메소드이기에 get메소드와 함께 사용했을때 에러가 발생한다. QuerySet을 반환하는 않는 메소드에 반환하는 메소드를 함께 사용시 에러가 발생한다는것을 알 수 있다.
그래서 복수의 값들이 나오는 경우 filter를 사용하고 get은 하나의 값만 불러올때 사용한다.

update, delete 메소드



작성하여 나온 값들을 봤을 때 두 메소드 모두 QuerySet을 반환 하지 않는다는것을 알 수 있다. update의 경우 updaterow의 숫자가 나오고 delete의 경우 삭제된 개체 수와 개체 유형별 삭제 횟수가 나오게 되는 것이다.

추가로, QuerySets을 반환하지 않는 method는 아래와 같고, views.py 작성에 연결 되기에 해당 method 또한 연습을 지속적으로 해서 최대한 활용할 수 있게 익혀야겠다.

get_or_create()
exists()
count()
first()
last()
aggregate()

profile
💻 STUDY RECORD

0개의 댓글