
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..
# 예로 사용하는 클래스
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( ), save( ), bulk_create( )
위 create 메소드를 이용하여 추가 된 내역을 알 수 있다.
get( ), all( ), filter( ), exclude( ), values( ), values_list( )
위 메소드을 입력했을때의 값들을 알 수 있다. 맨 아래 12번 값을 보면 에러가 발생했는데values_list( )의 경우QuerySet이 반환되는 경우이기에 7번을 보면get메소드는 그 값만을 불러오는QuerySet을 반환하지 않는 메소드이기에get메소드와 함께 사용했을때 에러가 발생한다.QuerySet을 반환하는 않는 메소드에 반환하는 메소드를 함께 사용시 에러가 발생한다는것을 알 수 있다.
그래서 복수의 값들이 나오는 경우filter를 사용하고get은 하나의 값만 불러올때 사용한다.
작성하여 나온 값들을 봤을 때 두 메소드 모두QuerySet을 반환 하지 않는다는것을 알 수 있다.update의 경우update된row의 숫자가 나오고delete의 경우 삭제된 개체 수와 개체 유형별 삭제 횟수가 나오게 되는 것이다.
추가로, QuerySets을 반환하지 않는 method는 아래와 같고, views.py 작성에 연결 되기에 해당 method 또한 연습을 지속적으로 해서 최대한 활용할 수 있게 익혀야겠다.
get_or_create()
exists()
count()
first()
last()
aggregate()