目录
一. 模型类的开发
1. 定义模型类
2. 生成迁移 python manage.py makemigrations
3. 执行迁移,生成数据库表单 python manage.py migrate
二.操作模型类
三. 模型类进阶之自定义管理器
四. 模型类进阶之查询数据
1、查询集
2、字段查询
3、聚合函数
4、 F对象
5、Q对象
关于模型类中各个字段的含义,可以查看django官方文档
备注:如果models.ForeignKey不加on_delete参数,会提示以下错误:
在虚拟环境下切换到项目所在目录,输入以上指令:
备注:如果更改了模型类的数据,则生成迁移和执行迁移都需要再来一次,可以将原来生成的迁移文件如0001_initial.py先删除再重新操作。
首先使用 python manage.py shell进入shell窗口
1. 引入模型类下的类
from testApp.models import BookInfo
from testApp.models import HeroInfo
2. 相关操作命令
#创建对象
book =BookInfo()
#给对象赋值
book.xxx =xxx
#保存
book.save()_
#查询全部对象
BookInfo.objects.all()
#查看特定的对象
b=BookInfo.objects.get(id=x)
#更新对象内容
b.xxx =xxx
b.save()
#删除
book.remove()
#关系之一对多找对象
book.heroinfo_set.all()
#关系之多对一
hero.book
当然最方便的是进入后台直接操作,这一点下一章再学习。
django中管理器扮演的角色就是ORM,是模型类的属性,用于将对象与数据表映射。默认的管理器为objects,当自定义管理器后,系统会删除自带的objects。
自定义管理器主要有两个作用:
1. 更改默认查询集的结果
2. 定义一个模型类创建的方法
在这里我们应该有这么两个疑问:为什么要查询数据?怎么查?
为什么要查:是为了将数据库中的数据提取出来,便于我们使用。
至于怎么查,看以下几点:
在管理器上调用过滤器方法会返回查询集;常用的过滤器有 filter(),get(),count()
filter() ---返回符合筛选条件的数据
get() ---返回单个满足条件的数据
count()---返回总的个数
语法:属性名称__比较运算符 =值(也就是类属性名称+双下划线+比较运算符=某个筛选值)
如:filter(btitle__contains='西’) 表示筛选出名字中包含'西'字的数据。
比较运算符有:
exact: 表示判等,大小写敏感,可以省略不写
contains: 是否包含,大小写敏感
startswith,endswith: 以value开头或结尾,大小写敏感
isnull,isnotnull: 是否为null
注意,如果在前面加上i代表不区分大小写,如iexact
in: 是否在范围内
gt,gte,lt,lte: 大于,大于等于,小于,小于等于
year,month,day,week_day,hour,minute,second: 对日期类型的属性进行运算
还有查询的快捷方式pk,代表主键id. 如filter(pk__gt=2)
使用aggregate()函数返回聚合函数的值。
函数:Avg,Count,Max,Min,Sum
可用于一个字段和另一个字段作比较。
实现过滤器的或运算。
如:liest.filter(Q()|Q()