ORM操作之二(CURD)

安装ipython调试器:
pip install ipython -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
django里面启动ipython调试:
python manage.py shell -i ipython

In [2]: from projects.models import Projects

In [3]: Projects.objects.all()
#这里获取的一个Projects就是数据库中的一条数据
Out[3]: <QuerySet [<Projects: 測試項目>, <Projects: 项目2>]>

In [4]: Projects.objects.get(id=2)
Out[4]: <Projects: 项目2>

In [5]: Projects.objects.get(id=2).leader
Out[5]: '科比2'

model.objects.get(条件),get方法获取特定的一条记录只能用来查询返回一条记录(往往为主键/唯一键);多条/记录不存在,get方法会报错

curd的c(创建数据)

前端访问该view的请求接口就可以了,比如我是
http://127.0.0.1:8008/index/
调用save() 就会写入到数据库
ORM操作之二(CURD)_第1张图片
创建数据二(Projects.objects.creat())
ORM操作之二(CURD)_第2张图片

查询®的操作

查询1获取所有的记录:Projects.objest.all()
1.查询出来的结果是一个查询集(类似list的类型,但是注意不是列表),支持list的所有操作:
存放项目项目对象的列表,
可以用for循环遍历取出所有的项目

ORM操作之二(CURD)_第3张图片
2.支持切割等等 ,for循环
ORM操作之二(CURD)_第4张图片

查询2

ORM操作之二(CURD)_第5张图片
Projects.objects.get(“id”) 获取的其实就是一个Projects对象的值,通过类Projects.name (可以获取自己设置的类属性值,见Projects model表)

Projects.objects.filter(name__) 返回的也是个查询集[{},{}] 支持for循环切片操作

1.字段值包含 (对应数据库的操作是like,模糊查询)
2.以什么结束
3.icontains (like 忽略大小写)
ORM操作之二(CURD)_第6张图片

4标题 关联查询(通过项目表查询接口信息(即字表查父表的信息))

==》在项目里面通过interface model指定的project = models.ForeignKey外键查询接口name的结果

interface = Projects.objects.filter(interface__name="接口1")#结果也是查询集
SELECT `tb_projects`.`id`, `tb_projects`.`name`, `tb_projects`.`leader`, `tb_projects`.`tester`, `tb_projects`.`programer`, `tb_projects`.`publish_app`, `tb_projects`.`desc` FROM `tb_projects` INNER JOIN `tb_interfaces` ON (`tb_projects`.`id` = `tb_interfaces`.`project_id`) WHERE `tb_interfaces`.`name` = 接口1

2.查询项目1下面有多少个接口
api = Interfaces.objects.filter(project_id=1) 后面还可以接filter 即:Interfaces.objects.filter(project_id=1).filter(name=“科比”)
查询集的链式操作
Interfaces.objects.filter(project_id=1).filter(name=“科比”).first() #获取第一条数据
Interfaces.objects.filter(project_id=1).filter(name=“科比”).last() #获取最后一条数据
不支持负索引,正向的是可以
Interfaces.objects.filter(project_id=1).filter(name=“科比”)[-1]

#更新
#先获取-修改-保存
one_project = Projects.objects.get(id=1)
one_project.name = "测试项目修改"
one_project.save()

#删除
#获取 - 删除 - 保存
projects = Projects.objects.filter(leader__contains="科比l")
one_project = projects.first()
one_project.delete()

你可能感兴趣的:(python,django)