添加:
objects.save()
objects.create(author="张三")
查询:
models.objects.all() # 获取全部数据
models.objects.all().values('id') #只取id列
models.objects.all().values_list('id','author') #取出id和author列,并生成一个列表
models.objects.get(id=1) #获取id, 这种方法如果id=1不存在,则会抛出 ObjectDoesNotExist异常
models.objects.filter(id=1) #获取id=1会产生一个新的QuerySet
models.objects.exclude(id=1) #返回一个不包含id=1的QuerySet
models.objects.annotate(Count('entry')) # 使用提供的查询表达式Annotate 查询集中的每个对象
models.objects.filter(author="张三").order_by(id) #对结果进行排序
models.objects.reverse() #对结果进行反向排序排序
models.objects.filter(author="张三").order_by(id)[:5] # 获取前5个数据,类似于top
models.objects.all()[:10:2] # 这是查询从第0个开始到第10个,步长为2的数据。
models.objects.all().distinct() # 去重
models.objects.filter(author__contains="张") # like ‘%aaa%’ ,模糊查询,查找所有作者名包含“张”的数据
__exact 精确等于 like ‘aaa’
__iexact 精确等于 忽略大小写 ilike ‘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的区别
删除:
model.objects.all().delete()
修改:
models.objects.filter(author='张三').update(author='520')
obj = models.objects.get(author='张三')
obj.author= '520'
obj.save()