til Q() 객체와 annotate

이영주·2020년 12월 9일
1

여러가지 조건의 필터 적용하기

Q() 객체를 사용해서 여러가지 조건의 필터를 적용할 수 있다.
방법은 아래와 같다.

맨 아래줄 queryset = Property.objects.filter(q)는 아래의 형태를 띄게 될것이다.
추가로 필터 조건에 아무것도 걸리지 않을 경우 전체 Property의 목록이 나오게 된다.

Property.objects.filter(Q(host__is_super=hosr)|Q(type__name=type)|
Q(facility__name=facility)|Q(category__name=category)}Q(rule__name=rule))

리뷰가 많은 숙소 순으로 정렬하기

annotate를 이용하여 해당 숙소에 리뷰가 몇개인지 count해서 필드 생성 후
num_reviews를 기준으로 정렬했다.

order_by num_reviews 는 오름차순 정렬이고
앞에 -는 내림차순을 의미한다.

0개의 댓글