ORM总结(单表,一对多,多对多)

 

一。表记录的增删改查(单表操作)

1.添加

时间的格式必须写成YYYY-MM-DD

2.删除

filter筛选多条记录,返回的是QuerySet集合对象

3.修改

这三种都是类.objects.    

4.查询

.values是具体拿一个字段,不再拿整个对象了

 

以字典的形式返回以列表返回

 

去重:

是根据某个字段去重,整体是去不了的,因为主键是唯一的

 

 

 

模糊查询:万能的下划线

 

多表操作(一对多)

1.添加

2查询

 

通过filter values 双下划线__查询

 

多对多:两个表之间建立一个ManyToManField

 

通过对象的方式绑定关系

上面为正向查询。得到book id=3的一个书籍对象,然后在通过这个对象找到所有写id=3的书的所有作者信息。下面为反向查找,通过建立id=2的作者的对象,再通过book_set.all()找到该作者出的所有书

 

 

也可以通过万能的双下划线。查询alex出过的书籍名称及价格

 

 

添加一个添加第四本书是第二个作者,book_obj是id=4书的对象

添加多个

 

删除

 

 

 

总结:单表操作

增:create()   查:all ,filter(queryset对象集合).value(字典集合).value_list(元祖集合)

删:.delete()  改:update()

一对多操作:通过外键来操作   增:.create()   

查:all().filter()

删:delete()                      因为all ,filter(queryset对象集合),所以跨表操作时,for下可以用.而filter选择智能用__

多对多:通过MTM来操作

增:add()

删:remove()

更新:多余删掉。没有自增加

查:m.all()获取的是另一张表所有的queryset对象

 

 

拓展:a表是b表的父表。b表又是c表的父表。通过c表来查a表(跨几个表就用几个__

以上都是正向查询,下面介绍反向查询:一般不做反向查询。 一对多和多对多都可以自命名(related_name=''),不自命名的话都是小写的类名_set

第一行s就是“主表”,第二行c就是“主表”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值