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