Poll.objects.get(
Q(pub_date=date(2005, 5, 2)) | Q(pub_date=date(2005, 5, 6)),
question__startswith='Who',
)
위 ORM에 대응하는 쿼리는 다음과 같다.
SELECT *
FROM polls
WHERE question LIKE 'Who%'
AND (pub_date = '2005-05-02' OR pub_date = '2005-05-06')
# INVALID ORM
Poll.objects.get(
question__startswith='Who',
Q(pub_date=date(2005, 5, 2)) | Q(pub_date=date(2005, 5, 6))
)
ORM으로 룩업(filter)를 진행할 때 보통 Q 객체와 키워드 인자를 사용하기 마련이다. 특히, Q가 전달될 때, Q객체는 반드시 키워드 인자보다 앞서있어야 한다.