Q객체
DATE
2022/07/12
CATEGORY
컴퓨터/Django
프로젝트 중 filter 조건을 2개 이상 걸어야할 필요가 생겼다. memo테이블에서 plan_pk 속성의 값이 null값인 쿼리셋을 가져오는 데에 어려움이 있었다. 구글링을 통해 검색을 해보니 Q객체를 사용하여 여러 조건을 걸수 있었고, 이에 대해 정리해보려고 한다.
from django.db.models import Q
MemoModel.objects.filter(Q(plan_pk='')|Q(plan_pk=None))
>> 위 코드는 주어진 문제를 해결한 코드 방식이다.
Q 사용 다른 방식
from django.db.models import Q
q = Q()
q.add(Q(name='ominyoung', q.OR)
q.add(Q(address=2, q.AND)
q.add(Q(rate=1, q.OR)
Memo.objects.filter(q)
>> 위 코드를 쿼리문으로 바꾸면 다음과 같다.
SELECT * FROM memo WHERE (name=ominyoung AND address=2 OR rate=1)
>> Q() 선언후 add()로 추가할때 앞의 조건과 2번째 인자값으로 연결하는 모습을 볼 수 있다.
'컴퓨터 > Django' 카테고리의 다른 글
ajax로 넘긴 json 형식을 django에서 저장하기 (0) | 2022.08.02 |
---|---|
모델 ForeignkeyField의 on_delete 옵션 정리 (0) | 2022.07.15 |
모델 필드 정의시 언제 널을 쓰고 언제 공백을 쓸 것인가 (0) | 2022.07.15 |