ORM增删改查
添加的俩种方式
- save()
- 通过模型类保存
注意:添加有外键的信息操作如下:
herozhu = HeroInfo.objects.create(
hname = "猪八戒",
hgender = 0,
hdesc = 'houhouhou',
hbook = book
)
herosha = HeroInfo.objects.create(
hname = "沙悟净",
hgender = 1,
hdesc = '呵呵',
hbook = book
)
修改数据
修改更新有两种方法
1) 修改模型类对象的属性,然后执行save()方法
2)使用模型类.objects.filter().update(),会返回受影响的行数
此时数据库内容都修改成功
删除数据
删除有俩种方法
1)模型类对象delete
此时数据库内容:
2)模型类.objects.filter().delete()
此时数据库内容:
基本查询
使用方法:
get:查询单一结果,如果不存在会抛出DoesNotExist异常,如果存在多个结果会报MultipleObjectsReturned异常
all:查询多个结果
count:查询结果数量
过滤查询
查询的时候 __ (双下划线)表示判断
- filter:过滤出多个结果
- exclude:排除掉符合条件剩下的结果
- get:过滤单一结果
- exact:表示判断相等
- contains:表示是否包含
- startswith和endswith:以指定开头或者结尾
- isnull:是否为null
- exclude:过滤器
- in:是否包含在范围内
- gt:大于
- gte:大于等于
- lt:小于
- lte:小于等于
F和Q对象
1)F:
之前的查询都是对象的属性与常量值比较,两个属性怎么比较呢? 答:使用F对象,被定义在django.db.models中。
语法:F(属性名)
导包:from django.db.models import F,Q
2)Q:
多个过滤器逐个调用表示逻辑与关系,同sql语句中where部分的and关键字。
实现mysql里的not and or
聚合函数和排序函数
1)聚合函数:
使用aggregate()过滤器调用聚合函数。聚合函数包括:Avg平均,Count数量,Max最大,Min最小,Sum求和,被定义在django.db.models中。
排序:
使用order_by对结果进行排序