==============================================
方法1
b.ook = BookInfo(field=value)
book.save()
方法2
BookInfo.objects.create(field=value)
BookInfo.objects.get().delete()
方法1
book.name=value
book.save()
方法2
BookInfo.objects.get().update(name=value)
注意:使用get查询,如果数据不存在会报异常DoseNotExist
book = BookInfo.objects.get(id=1)
books = BookInfo.objects.all()
book = BookInfo.objects.first()
book = BookInfo.objects.last()
BookInfo.objects.all().count()
filter()过滤出多个结果
exclude()排除符合条件剩下的结果(取反)
get()获取单个结果
三种方法的语法形式一样
语法形式:filter(字段名__运算符 = 值)
查询编号为1的图书
BookInfo.objects.get(id=1)
BookInfo.objects.get(pk=1) # primary key
BookInfo.objects.get(id__exact=1)
简写为
BookInfo.objects.get(id=1)
BookInfo.objects.get(name='射雕英雄传')
BookInfo.objects.get(id=1) # 单个结果
BookInfo.objects.filter(id=1) # 返回结果集 ]>
BookInfo.objects.filter(name__contains="湖")
BookInfo.objects.filter(name__contains="英雄")
BookInfo.objects.filter(name__startswith="传")
BookInfo.objects.filter(name__endswith='部')
BookInfo.objects.filter(name__isnull=True)
# 查询编号1,3,5的书籍
BookInfo.objects.filter(id__in=[1, 3, 5])
BookInfo.objects.filter(id__gt=3)
BookInfo.objects.filter(id__gte=3)
BookInfo.objects.filter(id__lt=2)
BookInfo.objects.filter(id__lte=2)
年:日期字段 __year
月:日期字段__month
日:日期字段__day
周:日期字段__weekday
# 查询1980年发布的图书
BookInfo.objects.filter(pub_date__year=1980)
# 查询5月发布的图书
BookInfo.objects.filter(pub_date__month=5)
# 查询11号发布的图书
BookInfo.objects.filter(pub_date__day=11)
# 查询1990年1月1号后发表的图书
BookInfo.objects.filter(pub_date__gt='1990-1-1')
F对象可以实现两个属性的比较
语法格式:filter(字段名__运算符=F(‘字段名’))
from django.db.models import F
# 查询评论量大于阅读量的书籍
BookInfo.objects.filter(commentcount__gt=F('readcount'))
# 评论量 大于阅读量2倍的书籍
BookInfo.objects.filter(commentcount__gt=F("readcount") * 2)
Q对象的语法形式:Q(字段名__ 运算符=值)
or :Q(字段名__ 运算符=值) | Q(字段名__ 运算符=值)
and :Q(字段名__ 运算符=值) & Q(字段名__ 运算符=值)
not :~Q(字段名__ 运算符=值)
from django.db.models import Q
# 查询id大于2或者阅读量大于20的书籍
BookInfo.objects.filter(Q(id__gt=2) | Q(readcount__gt=20))
BookInfo.objects.filter(Q(id__gte=3) | Q(commentcount__gt=80))
# 查询书籍id不为3
# exclude方式
BookInfo.objects.exclude(id=3)
# Q对象方式
BookInfo.objects.filter(~Q(id=3))