八月22日,知识点总结:python manage.py makemigrations
python manage.py migrate

unique=true是指这个字段的值在这张表里不能重复,所有记录值都要唯一,就像主键那样搜索nullable=false是这个字   段在保存时必需有值,不能还是null值就调用save去保存入库


一、增删改查1、添加表内容(三种方式)1.1 obj = models.UserType(列名=‘内容’)obj.save()1.2 models.UserType.objects.create(列名=‘内容’)1.3user_dict={'列名':‘内容’,'列名','内容’}models.UserType.objects.create(**user_dict)2、查询数据2.1 request.POST.get('usernaem')#获取单条数据,不存在则报错(不建议)2.2 ret =models.UserType.objects.all()#获取全部print(type(ret),ret.query)for item in ret:#根据循环可以输出表内容print(item,item.nid,item.caption)#ret.query 返回一个原生SQL#ret,得到一个特殊的QuerySet对象2.3 ret =models.UserType.objects.all().values('nid')print(ret)#values('xxx') #返回一个列表中包含字典2.4 ret=models.UserType.objects.all().values_list('nid')print('ret')#返回一个列表中加元组2.5 model.UserType.objects.filter(name='name')# 获取指定条件的数据3、更改数据库内容3.1 models.UserInfo.objects.filter(user='alex').update(email='123@qq.com')#将指定的条件更新到数据库,可以使用字典**kwargs3.2 obj = models.UserInfo.objects.get(user='alex')obj = email='!!!!@!!!!!'obj.save()#修改单条数据4、删除数据4.1models.UserInfo.objects.filter(name='alex').delete()按条件删除二、双下划线操作1.连表操作1.1 ret =models.UserInfo.objects.all().values('user','user_type__caption')##user_type__caption  __双下划线在这是执行连表操作,输出另外表内容1.2 拿出类型是超级管理员的所有用户ret = models.UserInfo.objects.filter(user_type__caption="管理员").values('user','user_type__caption')2.多对多(ManyToMany)注:创建多台主机,多个部门1.自动创建关系表1.1 h2g =models.ManyToManyField('host')#创建多对多关系1.1.1 将多台机器分配给一个组add添加关系,remove 删除表关系,delete删除表关系和表 set 添加,删除h = Host.objects.get(hid=1) ##只删除表关系h.group_set.remove(*Group.objects.filter(gid__gt=1))h = Host.objects.get(hid=1)   ##添加表关系h.group_set.add(*Group.objects.filter(gid__gt=1))h = Host.objects.get(hid=1)h.group_set.all().delete() #delete删除表关系和表obj =Group.objects.get(gid=1)print(obj.gid,obj.name,obj.h2g.all()) #bj.h2g.all() 是关系表,没创建关系输出空列表q =models.objects.filter(hid__gt=3)obj.h2g.add(*q)#将多台主机分到obj组2.2.2 将一台主机分给多个组h =Host.objects.get(hid=1)obj =Group.objects.get(gid=1)obj.h2g.add(h)    ##主机id等于1分配到第一组obj =Group.objects.get(gid=2)  ##obj.h2g.add(h)###主机id等于1分配到第二组h =models.Host.objects.get(hid=1) ##找到第一台主机h.group_set.add(*Group.objects.filter(gid__gt=2))#gid大于2的所有分组分配给H主机反向查找 表名__set ,查找什么表名就是什么h.models.Host.objects.get(hid=1)h.group_set.add(*models.Group.objects.filter(gid__gt=12))注:h = Host.objects.get(hid=1)h.group_set.add(1) ##可以直接写数字添加h.group_set.add(Group.objects.get(gid=1))h.group_set.add(*[1,2,3]) ##可以用列表添加关系h.group_set.set(Group.objects.filter(gid__gt=18), clear=True)clear = True  清空在设置(添加)set 不清空添加注:附加update_or_create,get_or_create 这两个是一样的都是给group和关系表添加数据   前提是关系表里不存在这个数据列:# r = h.group_set.update_or_create(name='技术部')如果没有技术部,就给group组中加上技术部,关系表中自动关联一条数据# print(r)# r = h.group_set.get_or_create(name='人事部')# print(r)2.自己创建表关系HostToGroup.objects.create(Host_id_id=1,group_id_id=2,status=11)#添加内容创建索引class HostToGroup(models.Model):
#     hgid = models.AutoField(primary_key=True)
#     host_id = models.ForeignKey('Host')
#     group_id = models.ForeignKey('Group')
#     status = models.IntegerField()
#     class Meta:
#         unique_together = [   ###定义唯一索引,里面的索引值就不可以重复
#             ('host_id', 'group_id'),
#         ]

  

实例

# 1、查询所有图书类型为“科学”的所有书籍的 名称、价格、发布时间、图书类型(两种方式)

# 2、查询作者“alex"参与编写的所有书籍(两种方式)
class Author(models.Model):'''作者'''name = models.CharField(max_length=100)age = models.IntegerField()class BookType(models.Model):'''图书类型'''caption = models.CharField(max_length=64)class Book(models.Model):'''图书'''name = models.CharField(max_length=64)pages = models.IntegerField()price = models.DecimalField(max_digits=10, decimal_places=2)#         数字长度max_digits,有效位数decimal_placespubdate = models.DateField()  ##出版事件authors = models.ManyToManyField(Author)book_type = models.ForeignKey(BookType)

表中添加内容

# models.Author.objects.create(name='alex',age=12)# models.Author.objects.create(name='sunqihu',age=15)# models.Author.objects.create(name='jay',age=16)## models.BookType.objects.create(caption='文学')# models.BookType.objects.create(caption='科学')# models.BookType.objects.create(caption='数学')## book_mode={"name":"一路向西",#            "pages":300,#            "price":50,#            "pubdate":"2011-09-09",#            "book_type_id":2##            }# models.Book.objects.create(**book_mode)

  

添加关系

 # h =models.Book.objects.get(id=1)# h.authors_set.add(models.Author.objects.filter(id=2))# h =models.Book.objects.all().get(id=1)# obj =models.Author.objects.all().filter(id=3)# print(type(obj))# # print(h,type(h))# obj.book_set.add(h)

    # 第一种方法# rat = models.Book.objects.filter(book_type__caption='科学').values(#     'name','price','pubdate','book_type__caption'# )# print(rat)# for i in rat:#     print(i)# rem =models.Book.objects.filter(authors__name='sunqihu').values('name','authors__name')# print(rem)#第二种方法# objs =models.BookType.objects.get(caption="科学")# obj =objs.book_set.values('name','price','pubdate','book_type__caption')# print(obj)# obj = models.Author.objects.get(name='sunqihu')# obs =obj.book_set.values('name','authors__name')# print(obs)

  

转载于:https://www.cnblogs.com/pythonxiaohu/p/5798471.html

八月22日,django知识点总结:相关推荐

  1. Django知识点汇总

    Django知识点汇总 目录 一.wsgi接口 二.中间件 三.URL路由系统 四.Template模板 五.Views视图 六.Model&ORM 七.Admin相关 八.Http协议 九. ...

  2. 2019年10月22日AWS SAP-C01 大捷战报

    标题用了大捷,900+分,算么?哈哈 经过自己的持续学习.不懈的努力于2019年10月22日北京拿下AWS SAP-C01 认证,在完成考试后看到屏幕上PASS的那一刻,在辛苦感觉也值得.哭泣 早上考 ...

  3. 2021年4月22日 阿里供应链Java开发实习面试(三面)(含总结)

    title: 2021年4月22日 阿里供应链Java开发实习面试(三面) tags: 面经 2021年4月22日 阿里供应链Java开发实习面试(三面) 上来就手撕一道代码--输入一个数,然后顺时针 ...

  4. 定档12月22日!《黑客帝国4》王者归来,再掀矩阵革命

    [导读]距离上一部18年后,黑客帝国4将华丽归来,定档21年!女主演近期接受采访时透露,这部电影将带来全新的行业技术变革,包括前所未有的摄像设备.「子弹时间」.创纪录的百人动作捕捉等经典瞬间已经永留影 ...

  5. 一周第一次课笔记(1月22日)

    一周第一次课(1月22日) 1.1学习之初 1.2约定 1.3认识Linux 1.4安装虚拟机 1.5安装centos7 1.1学习之初 学习之前合理定位自己 给自己设定1个合理目标 计划好学习的期限 ...

  6. 9月22日我国垃圾邮件报告:湖北省再居榜首

    据中国互联网协会反垃圾信息中心发布的实时统计数据显示,9月22日,国内垃圾邮件发送服务器IP地址主要集中在湖北省.河南省和北京市等地区.其中,湖北省垃圾邮件发送服务器IP地址高达917个,河南达717 ...

  7. 分享Silverlight/WPF/Windows Phone/HTML5一周学习导读(4月16日-4月22日)

    分享Silverlight/WPF/Windows Phone/HTML5一周学习导读(4月16日-4月22日) 本周Silverlight学习资源更新 银光中国网友原创:Silverlight中获取 ...

  8. 金碧辉煌!皇城定制5月22日正式对外运营开业!

    2016年5月20日,皇城定制创始人宋沁沁发布声明:"皇城定制将于5月22日正式对外运营开业!"开业的地点,选在深圳市福田区皇御苑皇城广场352号,皇城定制诚邀广大消费者光临现场! ...

  9. jq 控制td只显示一行_9月22日现货黄金、白银TD、黄金TD、纸黄金、纸白银价格走势分析...

    前言:你必须在两者之间选择:你想拥有一部造钱机,还是将自己变成造钱机. [9月22日黄金交易所开盘] 上海黄金交易所黄金TD 凌晨收盘报405.4元/克: 上海黄金交易所白银TD 凌晨收盘报5.261 ...

最新文章

  1. 头回遇见网上找不到的问题,“缺少实例ID,实例ID是必需的”
  2. 手指甲上的月牙辨健康,月牙会“丢”也能“长回来”
  3. 链表中环的入口结点 python_【Github 5K星】BAT头条滴滴小米等笔试面经+深度学习/算法/NLP资源汇总!...
  4. 消息中间件学习总结(3)——RocketMQ之十分钟入门RocketMQ
  5. python输出一首诗_Python:如何打印我的简单诗
  6. Ubuntu如何定时清理内存
  7. oracle查询失效包sql,sql – ORA-00904:子查询中的标识符无效
  8. MATLAB建立图表的基础
  9. NYOJ 58 步数最少 【BFS】
  10. java如何打JAR包
  11. ARM、DSP、FPGA的区别
  12. python django ajax 逻辑推理_python django初识ajax
  13. 【游戏策划】学习笔记(一)----手游海岛奇兵拆解
  14. 基于ace admin 的左侧菜单及tab,tab支持右键菜单及与左侧菜单联动
  15. 有些东西还得记下来,看过了又忘了,找起来又难找 (fluxbox, ab, seige)
  16. 海淀朝阳房山二手房价格反弹明显 短期内仍将持续
  17. 南理工计算机专业好吗,吉大计算机or南理工计算机?(江苏考生)
  18. nacos启动后CPU使用率过高
  19. 【HDL】Verilog HDL仿真工具iverilog(Icarus Verilog)
  20. 健身房人物生活锻炼照片调色艺术LR预设

热门文章

  1. TCP与UDP在socket编程中的区别
  2. [Android] 开发第二天
  3. thinkphp5如何使用layout
  4. 打印modal框中在线生成的二维码
  5. 输出cglib以及jdk动态代理产生的class文件
  6. CDN预热与刷新在促销活动中的应用
  7. 学习开发语言 python 资料
  8. linux bash shell中,单引号、 双引号,反引号(``)的区别及各种括号的区别
  9. Hierarchy-Viewer架构
  10. Vue—相关工具—vue-cli