first()와 get()

Queryset Method

Queryset 메소드는 모든 객체들을 불러오는.all(), 조건에 만족하는 객체들을 불러주는 .filter() 등이 존재합니다. 이러한 Queryset 메소드는 QuerySet로 묶여서 반환 됩니다.

User.objects.all()    #<QuerySet [User:User object (1)]>

오늘 포스트에서 정리할 first()get()QuerySet으로 반환되지 않고 다른 값들을 반환해줍니다.

get()

get(**kwargs)는 하나의 객체를 찾을 때 사용하는 Method입니다. 만약 .get(id=10)를 했을 때 없는 값을 찾을려고 하면 Matching query가 존재하지 않아서 오류가 발생합니다.
get()은 다른 용도도 존재합니다. 만약 QuerySet이 한개의 객체만 가지고 있으면 그 객체를 꺼내오게 됩니다.

first()

first()QuerySet에서 첫번째 객체를 반환해줍니다. 만약 비어있는 QuerySet이면 None을 반환해줍니다.
first()와 반대되는 기능을 가진 last()도 존재합니다.

aggregate()

aggreate() 메소드는 딕셔너리로 aggreate 값(sums,average)을 반환해줍니다.

query = Product.objects.aggregate(Count('name'))   # {'name__count' : 76}

또는 keyword argument로 인자로 주면 딕셔너리의 이름을 짓어주게 됩니다.

query = Product.objects.aggregate(cnt=Count('name'))   # {'cnt' : 76}

좋은 웹페이지 즐겨찾기