django的model操作汇整详解


Posted in Python onJuly 26, 2019

单表操作

增加数据

auther_obj = {"auther_name":"崔皓然","auther_age":1}
models.auther.objects.create(
 **auther_obj
)
models.auther.objects.create(
 auther_name="周雍博",
 auther_age=4
)
obj = models.auther(
 auther_name="崔洪艳",
 auther_age=29
)
obj.save()
obj = models.auther(
 auther_name = "王仙枝",
 auther_age = "50"
)
obj.save()

删除数据

models.auther.objects.filter(auther_name="崔洪艳")[0].delete()

一对多操作

增加数据

a_obj = models.auther.objects.get(id=1)
 
 
models.book.objects.create(
 book_name = "python课程1",
 book_price = 12,
 book_auther = a_obj
)
a_obj = models.auther.objects.get(id=5)
 
models.book.objects.create(
 book_name = "java课程1",
 book_price = 13,
 book_auther_id = a_obj.id
)
a_obj = models.auther.objects.get(id=2)
 
book_dict = {
 "book_name":"python课程2",
 "book_price":14,
 "book_auther_id":a_obj.id
}
 
obj = models.book.objects.create(
 **book_dict
)
a_obj = models.auther.objects.get(id=4)
 
book_dict = {
 "book_name":"java课程2",
 "book_price":15,
 "book_auther":a_obj
}
 
models.book.objects.create(
 **book_dict
)

一对多正向查询

# 查询id为2的书的所有作者的信息
obj = models.book.objects.get(id=2)
 
print(obj.book_auther.auther_name)
print(obj.book_auther.auther_age)
 
obj = models.book.objects.filter(id=2).values("book_name","book_price","book_auther__id","book_auther__auther_name","book_auther__auther_age")
 
print(obj)
# 查询id为2的作者的出版的书
 
obj = models.book.objects.filter(book_auther_id=2).values("book_name","book_price","book_auther__id","book_auther__auther_name","book_auther__auther_age")
print(obj)
 
 
obj = models.book.objects.get(book_auther_id=2)
print(obj.book_auther.auther_age)
print(obj.book_auther.auther_name)
print(obj.book_name)

一对多反向查询

# 查看出版社出版的书
 
obj = models.auther.objects.filter(id=2).values("auther_name","auther_age","book__book_name")
print(obj)
 
obj = models.auther.objects.get(id=2).book_set.values("book_name","book_price","book_auther__id","book_auther__auther_name","book_auther__auther_age")
print(obj)

多对多操作

增加数据

b1 = models.book.objects.get(id=1)
b2 = models.book.objects.get(id=2)
b4 = models.book.objects.get(id=4)
b5 = models.book.objects.get(id=5)
models.publish.objects.get(id=1).publish_book.add(
 b1,b2
)
book_list = [b1,b2]
 
models.publish.objects.get(id=2).publish_book.add(
 *book_list
)

更新数据

book_list = [b1,b2,b4,b5]
models.publish.objects.get(id=1).publish_book.set(book_list)

移除数据

models.publish.objects.get(id=1).publish_book.remove(b1)
 
book_list = [b2, ]
 
models.publish.objects.get(id=1).publish_book.remove(*book_list)

正向查询

obj = models.publish.objects.get(id=1).publish_book.values("book_name","publish__publish_name")
print(obj)
 
obj = models.publish.objects.filter(id=1).values("publish_name","publish_book__book_name")
print(obj)

反向添加数据

p1 = models.publish.objects.get(id=1)
p2 = models.publish.objects.get(id=2)
p3 = models.publish.objects.get(id=3)
b1.publish_set.add(p1,p2,p3)

反向删除数据

b1.publish_set.remove(p1)

反向更新数据,把remove替换为set就可以了

反向查询

obj = models.book.objects.get(id=1).publish_set.values("publish_name","publish_book__book_name")

model中多表关系和参数 

django的model操作汇整详解

django的model操作汇整详解

django的model操作汇整详解

多对多

django的model操作汇整详解

django的model操作汇整详解

django的model操作汇整详解

一对一

django的model操作汇整详解

model操作

django的model操作汇整详解

django的model操作汇整详解

django的model操作汇整详解

django的model操作汇整详解django的model操作汇整详解

django的model操作汇整详解

django的model操作汇整详解

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python的Flask框架中配置多个子域名的方法讲解
Jun 07 Python
浅谈Python对内存的使用(深浅拷贝)
Jan 17 Python
Python随机函数random()使用方法小结
Apr 29 Python
从django的中间件直接返回请求的方法
May 30 Python
Python错误处理操作示例
Jul 18 Python
Python实现购物评论文本情感分析操作【基于中文文本挖掘库snownlp】
Aug 07 Python
Python socket实现的简单通信功能示例
Aug 21 Python
Django 视图层(view)的使用
Nov 09 Python
python 从文件夹抽取图片另存的方法
Dec 04 Python
Python使用matplotlib绘制三维参数曲线操作示例
Sep 10 Python
Python实现数值积分方式
Nov 20 Python
Python TestSuite生成测试报告过程解析
Jul 23 Python
django的csrf实现过程详解
Jul 26 #Python
详解Python 4.0 预计推出的新功能
Jul 26 #Python
python mysql断开重连的实现方法
Jul 26 #Python
seek引发的python文件读写的问题及解决
Jul 26 #Python
python经典趣味24点游戏程序设计
Jul 26 #Python
对django后台admin下拉框进行过滤的实例
Jul 26 #Python
python函数的万能参数传参详解
Jul 26 #Python
You might like
精美漂亮的php分页类代码
2013/04/02 PHP
php 修改、增加xml结点属性的实现代码
2013/10/22 PHP
使用openssl实现rsa非对称加密算法示例
2014/01/24 PHP
php获得url参数中具有&的值的方法
2014/03/05 PHP
Yii Framework框架获取分类下面的所有子类方法
2014/06/20 PHP
PHP+shell实现多线程的方法
2015/07/01 PHP
Thinkphp5+plupload实现的图片上传功能示例【支持实时预览】
2019/05/08 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
JS 进度条效果实现代码整理
2011/05/21 Javascript
js控制CSS样式属性语法对照表
2012/12/11 Javascript
js arguments,jcallee caller用法总结
2013/11/30 Javascript
js 采用delete实现继承示例代码
2014/05/20 Javascript
使用js Math.random()函数生成n到m间的随机数字
2014/10/09 Javascript
Javascript 正则表达式实现为数字添加千位分隔符
2015/03/10 Javascript
JavaScript简单表格编辑功能实现方法
2015/04/16 Javascript
在Node.js中使用HTTP上传文件的方法
2015/06/23 Javascript
基于JSON格式数据的简单jQuery幻灯片插件(jquery-slider)
2016/08/10 Javascript
JavaScript 事件对内存和性能的影响
2017/01/22 Javascript
JavaScript中三种常见的排序方法
2017/02/24 Javascript
jQuery dateRangePicker插件使用方法详解
2017/07/28 jQuery
微信小程序选择图片和放大预览图片功能
2017/11/02 Javascript
Angular2管道Pipe及自定义管道格式数据用法实例分析
2017/11/29 Javascript
BootStrap modal实现拖拽功能
2018/12/01 Javascript
node.js实现微信开发之获取用户授权
2019/03/18 Javascript
vue微信分享的实现(在当前页面分享其他页面)
2019/04/16 Javascript
对于Python中线程问题的简单讲解
2015/04/03 Python
Python入门之三角函数全解【收藏】
2017/11/08 Python
Linux下Pycharm、Anaconda环境配置及使用踩坑
2018/12/19 Python
Python3删除排序数组中重复项的方法分析
2019/01/31 Python
python实现两张图片拼接为一张图片并保存
2019/07/16 Python
HTML5使用drawImage()方法绘制图像
2014/06/23 HTML / CSS
读后感作文评语
2014/12/25 职场文书
python基础之停用词过滤详解
2021/04/21 Python
用python修改excel表某一列内容的操作方法
2021/06/11 Python
alibaba seata服务端具体实现
2022/02/24 Java/Android
一文搞清楚MySQL count(*)、count(1)、count(col)区别
2022/03/03 MySQL