SteadyDrills

Django(장고)- 장고 ORM 중 fillter와 Q 객체( 'Q'object) 본문

웹개발

Django(장고)- 장고 ORM 중 fillter와 Q 객체( 'Q'object)

Drills 2024. 8. 28. 23:14

240828

filter()


filter() 메서드는 쿼리셋에서 특정 조건을 만족하는 객체들을 필터링하는 데 사용된다. 여러 조건을 조합할 때는 기본적으로 AND 조건이 적용된다.

 

from app.models import UserModel

# age가 20 이상이고 name이 'Alice'인 객체들 필터링
results = UserModel.objects.filter(age__gte=20, name='Alice')

 

 

Q 객체( 'Q'object) 


Q 객체는 복잡한 쿼리 조건을 표현할 때 사용됩니다. 특히 OR 조건이나 NOT 조건을 사용할 때 유용합니다. 여러 Q 객체를 사용하여 조건을 조합할 수 있습니다.

 

from app.models import UserModel
from django.db.models import Q

# age가 20 이상이거나 name이 'Alice'인 객체들 필터링
results = UserModel.objects.filter(Q(age__gte=20) | Q(name='Alice'))
from app.models import UserModel
from django.db.models import Q

# age가 20 이상이거나 name이 'Alice'가 아닌 객체의 수를 카운트
count_results = UserModel.objects.filter(Q(age__gte=20) | ~Q(name='Alice')).count()

print(count_results)
  • Q(age__gte=20): age가 20 이상인 조건.
  • ~Q(name='Alice'): name이 'Alice'가 아닌 조건.
  • |: 두 조건을 OR로 결합.

 

 

 

fillter와 Q 객체( 'Q'object) 의 차이점


  • filter(): 기본적으로 AND 조건으로 여러 조건을 결합하여 사용.
  • Q 객체: OR 조건이나 NOT 조건을 사용할 때 필요하며, 복잡한 쿼리 조건을 조합할 수 있음.