Q()는 Django ORM에서
AND/OR/NOT 같은 복합 논리 조건을 표현하기 위해 쓰는 객체
from django.db.models import Q
from myapp.models import User
# 1.OR 조건 (가장 자주 쓰임)
# 이름이 'Alice' 이거나 이메일이 'bob@example.com' 인 사용자
qs = User.objects.filter(Q(first_name='Alice') | Q(email='bob@example.com'))
# 2.AND 조건 (명시적으로 쓸 때)
# 이름이 'Alice' 이고, 활성 사용자
qs = User.objects.filter(Q(first_name='Alice') & Q(is_active=True))
# 3.NOT 조건
# 활성 사용자를 제외한 모든 사용자
qs = User.objects.filter(~Q(is_active=True))
# 혹은 exclude 로 같은 효과
qs = User.objects.exclude(is_active=True)