django【F和Q】

一、F

1  案例每人增加500工资
2  ORM:UserInfo.objects.filter().update(salary=500) 这不行吧
3  SQL: update userinfo set salary = salary + 500
4  
5  因此: F出现
6  from django.db.models import F
7  ORM:UserInfo.objects.filter().update(salary=F(‘salary’)+500)

 

二、Q

 1 帮助我们构造搜索条件
 2  UserInfo.objects.filter(id=123, name=‘alex’)
 3  d={‘id’:123, ‘name’:’alex’}
 4  UserInfo.objects.filter(**d)
 5  以上做搜索很LOW,很简单吧。
 6  
 7  因此: Q出现
 8  
 9  from django.db.models import Q
10  conn = Q()
11  
12  q1=Q()
13  q1.connector = ‘OR’
14  q1.children.append((‘id’,1))
15  q1.children.append((‘id’,10))
16  q1.children.append((‘id’,9))
17  
18  q2=Q()
19  q2.connector = ‘OR’
20  q2.children.append((‘id’,1))
21  q2.children.append((‘id’,10))
22  q2.children.append((‘id’,9))
23  
24  con.add(q1, ’AND’)
25  con.add(q2, ‘AND’)
26  
27  UserInfo.objects.filter(con) #这里可以直接传q1,q2或者con

 

posted @ 2017-06-22 15:42  willianflasky  阅读(211)  评论(0编辑  收藏  举报