查
# 查询相关API:
# <1>filter(**kwargs): 它包含了与所给筛选条件相匹配的对象
条件选取querySet的时候,filter表示=。
field名称__exact # 精确等于 like 'aaa'
__iexact # 精确等于 忽略大小写 ilike 'aaa'
__contains # 包含 like '%aaa%'
__icontains # 包含 忽略大小写 ilike '%aaa%'
__gt # 大于
__gte # 大于等于
__lt # 小于
__lte # 小于等于
__in # 存在于一个list范围内
__startswith # 以...开头
__istartswith # 以...开头 忽略大小写
__endswith # 以...结尾
__iendswith # 以...结尾,忽略大小写
__range # 在...范围内
ctime__range=(datetime.date(2022,5,1),datetime.date(2022,5,16))
__year # 日期字段的年份
__month # 日期字段的月份
__day # 日期字段的日
__isnull=True/False
# <2>all(): 查询所有结果
# <3>get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。
#-----------下面的方法都是对查询的结果再进行处理:比如 objects.filter.values()--------
# <4>values(*field): 返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列 model的实例化对象,而是一个可迭代的字典序列
# <5>exclude(**kwargs): 它包含了与所给筛选条件不匹配的对象
# <6>order_by(*field): 对查询结果排序
# <7>reverse(): 对查询结果反向排序
# <8>distinct(): 从返回结果中剔除重复纪录
# <9>values_list(*field): 它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列,添加参数flat = True,以列表形式显示结果。
# <10>count(): 返回数据库中匹配查询(QuerySet)的对象数量。
# <11>first(): 返回第一条记录
# <12>last(): 返回最后一条记录
# <13>exists(): 如果QuerySet包含数据,就返回True,否则返回False。
获取对象字段的值:
1.object.filed
2. getattr(object,field)
如果是一对多关联(举例):
Scorerecord.objects.filter(unit = Unit.objects.get(name=unit['name']))
改
models.Book.objects.filter(id=3).update(title="PHP")
删
Book.objects.filter(id=1).delete()
增
方式一: Author.objects.create(**{"name":"alex"}) #推荐使用这种
方式二: author=Author(name="alvin")
author.save()
方式三
author=Author()
author.name="alvin"
author.save()