八月22日,django知识点总结:
八月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知识点总结:相关推荐
- Django知识点汇总
Django知识点汇总 目录 一.wsgi接口 二.中间件 三.URL路由系统 四.Template模板 五.Views视图 六.Model&ORM 七.Admin相关 八.Http协议 九. ...
- 2019年10月22日AWS SAP-C01 大捷战报
标题用了大捷,900+分,算么?哈哈 经过自己的持续学习.不懈的努力于2019年10月22日北京拿下AWS SAP-C01 认证,在完成考试后看到屏幕上PASS的那一刻,在辛苦感觉也值得.哭泣 早上考 ...
- 2021年4月22日 阿里供应链Java开发实习面试(三面)(含总结)
title: 2021年4月22日 阿里供应链Java开发实习面试(三面) tags: 面经 2021年4月22日 阿里供应链Java开发实习面试(三面) 上来就手撕一道代码--输入一个数,然后顺时针 ...
- 定档12月22日!《黑客帝国4》王者归来,再掀矩阵革命
[导读]距离上一部18年后,黑客帝国4将华丽归来,定档21年!女主演近期接受采访时透露,这部电影将带来全新的行业技术变革,包括前所未有的摄像设备.「子弹时间」.创纪录的百人动作捕捉等经典瞬间已经永留影 ...
- 一周第一次课笔记(1月22日)
一周第一次课(1月22日) 1.1学习之初 1.2约定 1.3认识Linux 1.4安装虚拟机 1.5安装centos7 1.1学习之初 学习之前合理定位自己 给自己设定1个合理目标 计划好学习的期限 ...
- 9月22日我国垃圾邮件报告:湖北省再居榜首
据中国互联网协会反垃圾信息中心发布的实时统计数据显示,9月22日,国内垃圾邮件发送服务器IP地址主要集中在湖北省.河南省和北京市等地区.其中,湖北省垃圾邮件发送服务器IP地址高达917个,河南达717 ...
- 分享Silverlight/WPF/Windows Phone/HTML5一周学习导读(4月16日-4月22日)
分享Silverlight/WPF/Windows Phone/HTML5一周学习导读(4月16日-4月22日) 本周Silverlight学习资源更新 银光中国网友原创:Silverlight中获取 ...
- 金碧辉煌!皇城定制5月22日正式对外运营开业!
2016年5月20日,皇城定制创始人宋沁沁发布声明:"皇城定制将于5月22日正式对外运营开业!"开业的地点,选在深圳市福田区皇御苑皇城广场352号,皇城定制诚邀广大消费者光临现场! ...
- jq 控制td只显示一行_9月22日现货黄金、白银TD、黄金TD、纸黄金、纸白银价格走势分析...
前言:你必须在两者之间选择:你想拥有一部造钱机,还是将自己变成造钱机. [9月22日黄金交易所开盘] 上海黄金交易所黄金TD 凌晨收盘报405.4元/克: 上海黄金交易所白银TD 凌晨收盘报5.261 ...
最新文章
- 头回遇见网上找不到的问题,“缺少实例ID,实例ID是必需的”
- 手指甲上的月牙辨健康,月牙会“丢”也能“长回来”
- 链表中环的入口结点 python_【Github 5K星】BAT头条滴滴小米等笔试面经+深度学习/算法/NLP资源汇总!...
- 消息中间件学习总结(3)——RocketMQ之十分钟入门RocketMQ
- python输出一首诗_Python:如何打印我的简单诗
- Ubuntu如何定时清理内存
- oracle查询失效包sql,sql – ORA-00904:子查询中的标识符无效
- MATLAB建立图表的基础
- NYOJ 58 步数最少 【BFS】
- java如何打JAR包
- ARM、DSP、FPGA的区别
- python django ajax 逻辑推理_python django初识ajax
- 【游戏策划】学习笔记(一)----手游海岛奇兵拆解
- 基于ace admin 的左侧菜单及tab,tab支持右键菜单及与左侧菜单联动
- 有些东西还得记下来,看过了又忘了,找起来又难找 (fluxbox, ab, seige)
- 海淀朝阳房山二手房价格反弹明显 短期内仍将持续
- 南理工计算机专业好吗,吉大计算机or南理工计算机?(江苏考生)
- nacos启动后CPU使用率过高
- 【HDL】Verilog HDL仿真工具iverilog(Icarus Verilog)
- 健身房人物生活锻炼照片调色艺术LR预设