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() 就会写入到数据库
在这里插入图片描述
创建数据二(Projects.objects.creat())
在这里插入图片描述

查询®的操作

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

在这里插入图片描述
2.支持切割等等 ,for循环
在这里插入图片描述

查询2

在这里插入图片描述
Projects.objects.get(“id”) 获取的其实就是一个Projects对象的值,通过类Projects.name (可以获取自己设置的类属性值,见Projects model表)

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

1.字段值包含 (对应数据库的操作是like,模糊查询)
2.以什么结束
3.icontains (like 忽略大小写)
在这里插入图片描述

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()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值