django Q的用法

发布时间 2023-03-29 23:33:25作者: 凯宾斯基

范围查询:

from django.db.models import Q
from login.models import lucax #models对象

lucax.objects.get(
Q(question__startswith='Who'),
Q(pub_date=date(2005, 5, 2)) | Q(pub_date=date(2005, 5, 6))
)
等价于
SELECT * from polls WHERE question LIKE 'Who%'
AND (pub_date = '2005-05-02' OR pub_date = '2005-05-06')

 

复杂查询和条件查询结合 (注意条件查询要放到最后!!)

正确:
Poll.objects.get(
Q(pub_date=date(2005, 5, 2)) | Q(pub_date=date(2005, 5, 6)),
question__startswith='Who')

 

否定查询 Q前面加~

Q(question__startswith='Who') | ~Q(pub_date__year=2005)