filter()过滤
book_list=list(BOOK.objects.filter(book_name__contains=select).values())
filter即过滤筛选,book_name即筛选条件,__contains表示模糊查询,但是只支持把book_name当成整体的模糊查询,values空参表示获取所有值,如果加book_name表示只获取筛选出对象的book_name值。
注意__contains是两个下划线 _ _
values()的s别忘了
__exact 精确等于 like ‘aaa’
__iexact 精确等于 忽略大小写 ilike ‘aaa’
__contains 包含 like ‘%aaa%’
__icontains 包含 忽略大小写 ilike ‘%aaa%’,但是对于sqlite来说,contains的作用效果等同于icontains。
__gt 大于
__gte 大于等于
__lt 小于
__lte 小于等于
__in 存在于一个list范围内
__startswith 以…开头
__istartswith 以…开头 忽略大小写
__endswith 以…结尾
__iendswith 以…结尾,忽略大小写
__range 在…范围内
__year 日期字段的年份
__month 日期字段的月份
__day 日期字段的日
__isnull=True/False
__isnull=True 与 __exact=None的区别
Q包
from django.db.models import Q
Feeds.objects.filter( Q(openid = "A") | Q(openid = "B"))
# 等同于 Feeds.objects.filter(openid__in=["A", "B"]) 或者 Feeds.objects.filter(openid__range=["A", "B"])
# __in 和 __range 应该是有区别的, __range最适用的场景应该是时间段的查询
# 还可以进行反向过滤~Q
answer = list(Answers.objects.filter(~Q(floor_B=0), toQuestion_id=question_id, floor_A=i).values())
get()函数
session=Session.objects.get(stuid=stuid_client).session
get()获取的就是一个对象了, 所以里面参数只能写该模型的唯一标识, 而filter()获取的是所以满足条件的,返回的是一个列表
介绍几个常用函数
map()
book_list = list(map(str, book_list))
book_list = list(set(book_list))
book_list = list(map(eval, book_list))
map(A,B)可以将A作用在B的每个元素上, set()集合可以去除list列表中重复的元素, 由于字典不能相互比较, 于是采用将字典转字符串, 做比较后, 再去除字符串
update()
user = Users.objects.get(openid=openid)
score = user.score+10
user.update("score"=score)
或者
user = Users.objects.get(openid=openid)
score = user.score
user.score = score+10
user.save() # 一定要保存
Comments NOTHING