# 插入數據
from book.models import book
# 1 插入方式一
boo = book(name='111')
boo.save()
# 插入方式二
book.objects.create(name='222')
# 更新數據
# 方式一
from book.models import book
boo = book.objects.get(id=1)
boo.name = '222'
boo.save()
# 方式二
book.objects.filter(id=1).update(
name=30
)
# 刪除數據
# 方式一
from book.models import book
boo = book.objects.get(id=2)
boo.delete()
# 方式二
book.objects.filter(id=3).delete()
# 查询数据
from book.models import book
#
try:
boo = book.objects.get(id=6)
except book.DoesNotExist:
pass
#
book.objects.all()
# get 返回的的对象
# filter 返回的列表
from book.models import book
# 获取个数
book.objects.all().count()
# 大于,小于
book.objects.filter(id__gt=7) # 大于7的值
book.objects.filter(id__gte=7) # 大于等于7的值
book.objects.filter(id__lt=7) # 小于7的值
book.objects.filter(id__lte=7) # 小于等于7的值
book.objects.filter(id__lt=10, id__gt=1) # 大于1 小于10
# 成员判断 in
book.objects.filter(id__in=[1, 9, 8]) # 获取id等于 1 , 9 ,8的
# 是否为空isnull
book.objects.filter(id__isnull=True) # id这一项是否为空的
# 包括contains
book.objects.filter(name__contains='1') # 获取所以name包含1的值
book.objects.filter(name__icontains='2') # 获取所以name包含2的值 # 大小写不明感
# 排序 order_by
book.objects.filter(id__gt=1, id__lt=10).order_by('id') # 以id开始 asc 排序
book.objects.filter(id__gt=1, id__lt=10).order_by('-id') # 以id开始 desc 排序
# 分组group_by
from django.db.models import Avg, Max, Min, Count, Sum
book.objects.all().aggregate(Count('id')) # 获取所以id的 个数
book.objects.all().aggregate(Max('id')) # 获取最大的id
book.objects.all().aggregate(Avg('id')) # 获取平均的id
# 正侧匹配 regex ,不区分大小写 iregex
book.objects.filter(name__regex=r'^1') # 正侧匹配以1开头的
book.objects.filter(name__iregex=r'^1') # 正侧匹配以1开头的,不区分大小写
# date
book.objects.filter(name__date=datetime.date(2005, 2, 6))
# year
book.objects.filter(name__year=2005)
# F对象 ,两个属性直接打对比
from django.db.models import F
book.objects.filter(id__gte=F('age')) # id大于等于age的
# Q对象
from django.db.models import Q
book.objects.filter(id=10, name='222') # 并且
book.objects.filter(Q(id=7) | Q(id=10)) # 或者
book.objects.filter(~Q(id=10)) # 取反
# 关联查询 查询外键的
# 1.以知 主表数据 , 关联查询从表数据
boo = book.objects.get(id=10) # 查询id为10的数据
boo.bookinfo_set.all() # 从id为10的数据中关联查询 booinfo中的数据
# 2.已知 主表数据,关联查询
from book.models import bookinfo
boo = bookinfo.objects.get(id=10)
boo.book # book是boo数据中的对象
# 3.以知主表,条件是从表
book.objects.filter(bookinfo__name='111')
# 4.以知从表,条件是主表
bookinfo.objects.filter(book__name='111')
# limit 限制查询
book.objects.filter(id__name='111')[0:3]
# 分页 django
from django.core.paginator import Paginator
from book.models import book
boo = book.objects.all()
p = Paginator(boo, 6)
p.page(1) # 当前页码
p.count # 总数
发表评论