day61

增删改查

增加

  1. # 增加
  2. # 一对一
  3. # au_obj = models.AuthorDetail.objects.get(id=4)
  4. models.Author.objects.create(
  5. name='海狗',
  6. age=59,
  7. # 两种方式
  8. au_id=4
  9. # au=au_obj
  10. )
  11. # 一对多
  12. # pub_obj = models.Publish.objects.get(id=3)
  13. #
  14. # models.Book.objects.create(
  15. # title='xx2',
  16. # price=13,
  17. #
  18. # publishDate='2011-11-12',
  19. # # publishs=pub_obj , #类属性作为关键字时,值为model对象
  20. # publishs_id=3 # 如果关键字为数据库字段名称,那么值为关联数据的值
  21. # )
  22. # 多对多 -- 多对多关系表记录的增加
  23. # ziwen = models.Author.objects.get(id=3)
  24. # haigou = models.Author.objects.get(id=5)
  25. new_obj = models.Book.objects.create(
  26. title='海狗产后护理第二部',
  27. price=0.5,
  28. publishDate='2019-09-29',
  29. publishs_id=2,
  30. )
  31. new_obj.authors.add(3,5) # #*args **kwargs
  32. new_obj.authors.add(*[3,5]) # 用的最多,
  33. new_obj.authors.add(ziwen, haigou)

删除

  1. # 删除
  2. # 一对一
  3. # models.AuthorDetail.objects.filter(id=3).delete() 删除被关联的表会影响到有关联的表
  4. # models.Author.objects.filter(id=3).delete() 删除有关联的表不会影响到被关联的表
  5. # 一对多
  6. # models.Publish.objects.filter(id=3).delete()
  7. # models.Book.objects.filter(id=4).delete()
  8. # 多对多
  9. book_obj = models.Book.objects.get(id=2)
  10. # book_obj.authors.add() # 添加
  11. # book_obj.authors.remove(1) #删除
  12. # book_obj.authors.clear() # 清除
  13. # book_obj.authors.set(['1','5']) # 先清除再添加,相当于修改

  1. # 改
  2. # ret = models.Publish.objects.get(id=2)
  3. # models.Book.objects.filter(id=5).update(
  4. # # title='华丽丽',
  5. # publishs=ret,
  6. # # publishs_id=1,
  7. # )

基于对象的跨表查询

  1. # 查询
  2. # 一对一
  3. # 关系属性写在表1,关联到表2,那么通过表1的数据去找表2的数据,叫做正向查询,返过来就是反向查询
  4. # 查询一下王洋的电话号码
  5. # 正向查询 对象.属性
  6. # obj = models.Author.objects.filter(name='王洋').first()
  7. # ph = obj.au.telephone
  8. # print(ph)
  9. # 查一下电话号码为120的作者姓名
  10. # 反向查询 对象.小写的表名
  11. # obj = models.AuthorDetail.objects.filter(telephone=120).first()
  12. # ret = obj.author.name #陈硕
  13. # print(ret)
  14. # 一对多
  15. # 查询一下 海狗的怂逼人生这本书是哪个出版社出版的 正向查询
  16. # obj = models.Book.objects.filter(title='海狗的怂逼人生').first()
  17. # ret = obj.publishs.name
  18. # print(ret) #24期出版社
  19. # 查询一下 24期出版社出版过哪些书
  20. # obj = models.Publish.objects.filter(name='24期出版社').first()
  21. #
  22. # ret = obj.book_set.all() #<QuerySet [<Book: 母猪的产后护理>, <Book: 海狗的怂逼人生>]>
  23. # for i in ret:
  24. # print(i.title)
  25. # 多对多
  26. # 海狗的怂逼人生 是哪些作者写的 -- 正向查询
  27. # obj = models.Book.objects.filter(title='海狗的怂逼人生').first()
  28. # ret = obj.authors.all()
  29. #
  30. # print(ret) #<QuerySet [<Author: 王洋>, <Author: 海狗>]>
  31. # for i in ret:
  32. # print(i.name)
  33. # 查询一下海狗写了哪些书 -- 反向查询
  34. # obj = models.Author.objects.filter(name='海狗').first()
  35. # ret = obj.book_set.all()
  36. # print(ret)
  37. # for i in ret:
  38. # print(i.publishs.name)
  39. # print(i.title)
  40. # return HttpResponse('ok')

admin添加用户

  1. python manage.py createsuperuser
  2. 输入用户名:wuchao
  3. 邮箱不用输 直接回车
  4. 输入密码:必须超过8位,并且别太简单

admin注册

  1. from django.contrib import admin
  2. # Register your models here.
  3. from app01 import models
  4. admin.site.register(models.Author)
  5. admin.site.register(models.AuthorDetail)
  6. admin.site.register(models.Publish)
  7. admin.site.register(models.Book)

day61——多表操作(增、删除、改、基于对象的跨表查询)的更多相关文章

  1. $Django 多表操作(增删改查,基于双下划线,对象的查询) 在Python脚本中调用Django环境

    在Python脚本中调用Django环境. import osif __name__ == '__main__': os.environ.setdefault("DJANGO_SETTING ...

  2. Django学习——Django测试环境搭建、单表查询关键字、神奇的双下划线查询(范围查询)、图书管理系统表设计、外键字段操作、跨表查询理论、基于对象的跨表查询、基于双下划线的跨表查询

    Django测试环境搭建 ps: 1.pycharm连接数据库都需要提前下载对应的驱动 2.自带的sqlite3对日期格式数据不敏感 如果后续业务需要使用日期辅助筛选数据那么不推荐使用sqlite3 ...

  3. {django模型层(二)多表操作}一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询、分组查询、F查询和Q查询

    Django基础五之django模型层(二)多表操作 本节目录 一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询.分组查询.F查询和Q查询 六 xxx 七 ...

  4. django之 使用views.py里面的函数对表进行增删改查 内容(models.py中表的创建、views.py中函数的使用,基于对象的跨表查询)

    models之对于表的创建有以下几种: 一对一:ForeignKey("Author",unique=True),  OneToOneField("Author" ...

  5. 基于对象的跨表查询,多对多查询,多对多操作,聚合查询和分组查询,F查询和Q 查询

    基于对象的跨表查询 一对多查询(班级表和学生表) 表结构创建 class Class(models.Model): id = models.AutoField(primary_key=True) cn ...

  6. Django day08 多表操作 (三) 基于对象的跨表查询 基于双下划线的多表查询

    一: 基于对象的跨表查询 1. 一对一 正向: 反向: 2. 一对多 正向: 反向: 3.多对多 正向: 反向: 4.*****基于对象的多表查询 二: 基于双下划线的多表查询 1. 连表查询 一对一 ...

  7. django基础之day04,必知必会13条,双下划线查询,字段增删改查,对象的跨表查询,双下划线的跨表查询

    from django.test import TestCase # Create your tests here. import os import sys if __name__ == " ...

  8. python 全栈开发,Day73(django多表添加,基于对象的跨表查询)

    昨日内容回顾 多表方案: 如何确定表关系呢? 表关系是在2张表之间建立的,没有超过2个表的情况. 那么相互之间有2条关系线,先来判断一对多的关系. 如果其中一张表的记录能够对应另外一张表的多条记录,那 ...

  9. 五、Django学习之基于对象的跨表查询

    五.Django学习之基于对象的跨表查询 正向与反向查询 关键在于ForeignKey字段写的位置.例如下面这段代码, 关系属性(字段)写在哪个类(表)里面,从当前类(表)的数据去查询它关联类(表)的 ...

随机推荐

  1. css1.0~3.0背景图使用多张折叠的概念与方法

    需求:使用多张图片作为页面的背景图: 首先需要了解background的属性以及细节知识:https://www.cnblogs.com/chenglj/p/7372996.html backgrou ...

  2. c# 读数据库二进制流到图片

    public Bitmap PictureShow(string connectionString, string opName, string productType)        {       ...

  3. Linux从入门到放弃、零基础入门Linux(第三篇):在虚拟机vmware中安装linux(二)超详细手把手教你安装centos6分步图解

    一.继续在vmware中安装centos6.9 本次安装是进行最小化安装,即没有图形化界面的安装,如果是新手,建议安装带图形化界面的centos, 具体参考Linux从入门到放弃.零基础入门Linux ...

  4. CPU和Memory压力测试方法

    一:用原生Centos自带的工具 1. CPU 下面命令会创建 CPU 负荷,方法是通过压缩随机数据并将结果发送到 /dev/null: cat /dev/urandom | gzip -9 > ...

  5. Linux进程管理之top

    关于Linux进程查看,前面讲解了ps命令,下面拉介绍另一个命令top ps:静态查看 top:动态查看 动态查看进程的状态 # top [root@wei ~]# top top - 18:38:4 ...

  6. Python--RE--?

    ?在re中默认匹配前一个字符0次或者1次 比如: aal? 默认匹配aal,或者aa    即整体匹配前一个字符串,但是可以舍弃最近的一个字符或者不舍弃 re模块 常用正则表达式符号 '.' 默认匹配 ...

  7. UGUI:技能冷却效果

    版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...

  8. 网传英特尔酷睿第十代桌面处理器(Comet Lake 14nm)规格

    自从农企(AMD)2016年开始崛起时,牙膏厂(英特尔)就开始发力,陆续两代推出性价比颇高的桌面处理器, 第八代.第九代酷睿桌面处理器相当的给力,而第十代酷睿桌面处理器会很猛啊,据传从酷睿i3到酷睿i ...

  9. WPF 用户控件的自定义依赖属性在 MVVM 模式下的使用备忘

    依赖属性相当于扩充了 WPF 标签的原有属性列表,并可以使用 WPF 的绑定功能,可谓是十分方便的:用户控件则相当于代码重用的一种方式:以上几点分开来还是比较好理解的,不过要用到MVVM 模式中,还是 ...

  10. classpath环境变量解惑

    只有使用低于JDK1.5版本的JDK时,才需要设置classpath环境变量. 因为早期版本的JDK没有设计在当前路径下搜索Java类的功能,而且编译和运行java程序时还需要JDK的lib路径下的d ...