QureySet API建立在模型和数据库查询指南中提供的材料上
网址:https://docs.djangoproject.com/en/1.7/ref/models/querysets/
Q对象的使用
随着我们的程序越来越复杂,查询的条件也跟着复杂起来,这样简单的通过一个filter()来进行查询的条件将导致我们的查询越来越长。而Q()对象就是为了将这些条件组合起来。
当我们在查询的条件中需要组合条件时(例如两个条件‘且’或者’或’)时。我们可以使用Q()查询对象。例如下面的代码
from django.db.modelsimports Q
q=Q(question_startswith="what")
这样就生成了一个Q()对象
order_by
Entry.objects.filter(pub_date__year=2005).order_by('-pub_date', 'headline')
上面的结果将按pub_date降序排列,然后按 headline升序排列。前面的负号"-pub_date"表示 降序。暗示升序。要随机订购,请使用"?",如下所示:
Entry.objects.order_by('?')
django 批量写入数据
querysetlist=[]
for i in resultlist:
querysetlist.append(Account(name=i))
Account.objects.bulk_create(querysetlist)
django获取某一个字段的列表,values/values_list/flat
1.values返回是字典列表
2.values_list返回的是元组列表
3values_list加上flat=True之后返回值列表
假设有一对象UserInfo其有字段(uname,uemail)等字段
values
UserInfo.objects.filter(某查询条件).values('id','uname','uemail')
#输出结果为
[{u'id':1L,u'uname':'lisi',u'uemail':'11111123@qq.com'},{u'id':2L,u'uname':'laowang',u'uemail':'1111ew23@qq.com'}]
values_list
UserInfo.objects.filter(某查询条件).values_list('id','uname',''uemail')
#输出结果为
[(1L,lisi,11111123@qq.ocm),(2L,laowang,1111ew23@qq.com)]
flat=True
UserInfo.objects.filter(某查询条件).values_list('id',flat=True)
#输出结果为
[1L,2L]