Django之model F/Q以及多对多操作(补充)

model之F/Q操作

F操作,使用查询条件的值

打个比方吧,有一张表,保存着公司员工的工资,公司普涨工资,如何在model中操作,这就用到了F,首先需要导入此模块: 

from django.db.models import F
操作:
models.UserInfo.objects.filter().update(salary=F('salary')+500)

Q操作,构造搜索条件

model中的查询搜索有三种方式:

  1. 传参数
  2. 传字典
  3. 传Q对象

1、传参数

models.UserInfo.objects.filter(id=3,name='alex')

2、传字典

需要注意的是,传入字典时,字典前面需要加**,标记为字典 

dic = {'id':123,'name':'alex'}
models.UserInfo.objects.filter(**dic)

所以我们可以在在捕捉用户输入后,将输入构造成字典,然后将字典当做参数传入查询. 

3、传Q对象,构造搜索条件

首先还是需要导入模块:

from django.db.models import Q

   a、传入条件进行查询:

q1 = Q()
q1.connector = 'OR'
q1.children.append(('id', 1))
q1.children.append(('id', 2))
q1.children.append(('id', 3))
    
models.Tb1.objects.filter(q1)

  b、合并条件进行查询:

con = Q()
q1 = Q()
q1.connector = 'OR'
q1.children.append(('id', 1))
q1.children.append(('id', 2))
q1.children.append(('id', 3))
q2 = Q()
q2.connector = 'OR'
q2.children.append(('status', '在线'))
con.add(q1, 'AND')
con.add(q2, 'AND')

models.Tb1.objects.filter(con)

 

 from:https://www.cnblogs.com/ccorz/p/5882400.html

 

posted @ 2018-01-24 10:42  ShengLeQi  阅读(112)  评论(0)    收藏  举报