django Q的用法

前言

Q对象是Django对model查询中所使用的关键字参数进行封装后的一个对象。
Q对象可以通过 &(与 即 and、 |(或 即or )、 ~(非 取反 即 !=)运算来组合生成不同的Q对象

 

范围查询:

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')


QString::startsWith() -> 判断字符串是否以某个字符串开头,其中第二个参数指定是否大小写敏感,默认为大小写敏感
QString::endsWith() -> 判断字符串是否以某个字符串结尾,与QString::startsWith()类似
QString::contains() -> 判断是否包含某个字符串

 

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

正确:
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)

 

 

给字段默认+1的写法

只展示关键代码,先引入F函数,再使用F('字段名称')+1:

from django.db.models import F
Reporters.objects.filter(name='vie').update(stories_filed=F('stories_filed') + 1)

https://www.xinzhiweike.com/wenda/1586184475201536

posted @ 2023-03-29 23:29  凯宾斯基  阅读(176)  评论(0编辑  收藏  举报