Django ORM (二) 增加操作
数据库表结构生成完毕后,可以使用工具连接上去
在 app01_author 表创建基础记录
在 app01_publisher 表创建基础记录
添加 data_oper 方法
在 urls.py 文件上添加
from app01 import views
urlpatterns = [
....
path('data_oper/', views.data_oper),
]
ORM 增加方法
create 方式一
在 views.py 文件上添加
from django.shortcuts import render, HttpResponse
from app01 import models
from app01.models import Book,Author
def data_oper(req):
Book.objects.create(
title="hahaha",
price=2,
publication_date="2019-05-16",
publisher_id=1,
)
return HttpResponse("Hello world")
浏览器访问 http://127.0.0.1:8000/data_oper/,成功生成一条记录
create 方式二
在 views.py 文件上修改
from django.shortcuts import render, HttpResponse
from app01 import models
from app01.models import Book,Author
def data_oper(req):
dic = { "title":"K8S", "price":1, "publication_date":"2019-05-02", "publisher_id":1 }
Book.objects.create(**dic)
return HttpResponse("Hello world")
浏览器访问 http://127.0.0.1:8000/data_oper/,生成一条记录
save 方式一
from django.shortcuts import render, HttpResponse
from app01 import models
from app01.models import Book,Author
# Create your views here.
def data_oper(req):
obj=Book(
title="Python",
price=99,
publication_date="2019-05-06",
publisher_id=1,
)
obj.save()
return HttpResponse("Hello world")
save 方式二
from django.shortcuts import render, HttpResponse
from app01 import models
from app01.models import Book,Author
# Create your views here.
def data_oper(req):
obj=Book()
obj.title="GO"
obj.price=90
obj. publication_date="2019-05-06"
obj.publisher_id=1
obj.save()
return HttpResponse("Hello world")
外键一对多的(ForeignKey)
在 models.py 中 Book 表下定义外键为
publisher = models.ForeignKey(Publisher,on_delete=models.CASCADE)
方法一
在 views.py 文件上修改
from django.shortcuts import render, HttpResponse
from app01 import models
from app01.models import Book,Author,Publisher
# Create your views here.
def data_oper(req):
pub_obj = Publisher.objects.get(id=1) # 取publish 表 id 为1 的值
dic = {"title": "Docker", "price": 88, "publication_date": "2019-05-05", "publisher": pub_obj}
Book.objects.create(**dic)
return HttpResponse("Hello world")
方法二
在 views.py 文件上修改
from django.shortcuts import render, HttpResponse
from app01 import models
from app01.models import Book,Author
def data_oper(req):
dic = { "title":"K8S", "price":1, "publication_date":"2019-05-02", "publisher_id":1 } # 直接指定 publisher 外键值了,这里要加 _id
Book.objects.create(**dic)
return HttpResponse("Hello world")
外键多对多的情况
正向查询
from django.shortcuts import render, HttpResponse
from app01 import models
from app01.models import Book,Author,Publisher
# Create your views here.
def data_oper(req):
book=models.Book.objects.filter(id=1)[0]
authors=models.Author.objects.filter(id__gt=2)
book.authors.add(*authors)
return HttpResponse("Hello world")
反向查询
from django.shortcuts import render, HttpResponse
from app01 import models
from app01.models import Book,Author,Publisher
# Create your views here.
def data_oper(req):
book = models.Book.objects.filter(id__gt=1)
authors = models.Author.objects.filter(id=1)[0]
authors.book_set.add(*book)
return HttpResponse("Hello world")
双下划线(__)之单表条件查询
# models.Book.objects.filter(id__lt=10,id__gt=1) # 获取id大于1 且 小于10的值
#
# models.Book.objects.filter(id__in=[11, 22, 33]) # 获取id等于11、22、33的数据
# models.Book.objects.exclude(id__in=[11, 22, 33]) # not in
#
# models.Book.objects.filter(title__contains="ven")
# models.Book.objects.filter(title__icontains="ven") # icontains大小写不敏感
#
# models.Book.objects.filter(id__range=[1, 2]) # 范围bettwen and
Django ORM (二) 增加操作的更多相关文章
- Django ORM那些相关操作zi
Django ORM那些相关操作 一般操作 看专业的官网文档,做专业的程序员! 必知必会13条 <1> all(): 查询所有结果 <2> filter(**kwargs) ...
- Django ORM 多表操作
目录 Django ORM 多表操作 表模型 表关系 创建模型 逆向到表模型 插入数据 ORM 添加数据(添加外键) 一对多(外键 ForeignKey) 一对一 (OneToOneFeild) 多对 ...
- Django ORM 那些相关操作
Django ORM 那些相关操作 一般操作 必知必会13条 <> all(): #查询所有的结果 <> filter(**kwargs) # 它包含了与所给筛选条件相匹配的对 ...
- Django ORM那些相关操作
一般操作 https://docs.djangoproject.com/en/1.11/ref/models/querysets/ 官网文档 常用的操作 <1> all() ...
- Django - orm外键操作
1.orm外键操作 创建外键: 备注:ForeignKey两个参数,1个为关联的表名,1个为关联的字段名: 在django2.0后,定义外键和一对一关系的时候需要加on_delete选项,此参数为了避 ...
- Django ORM多表操作
多表操作 创建模型 实例:我们来假定下面这些概念,字段和关系 作者模型:一个作者有姓名和年龄. 作者详细模型:把作者的详情放到详情表,包含生日,手机号,家庭住址等信息.作者详情模型和作者模型之间是一对 ...
- django ORM单表操作
1.ORM介绍 ORM是“对象-关系-映射”的简称 映射关系: mysql---------Python 表名----------类名 字段----------属性 表记录--------实例化对象 ...
- 6月21日 Django ORM那些相关操作(表关联、聚合查询和分组查询)
一.ForeignKey操作 正向查找 对象查找(跨表) 语法: 对象.关联字段.字段 示例: book_obj = models.Book.objects.first() # 第一本书对象 pr ...
- Django ORM 多对多操作 使用聚合函数和分组 F查询与Q查询
创建表 # models.py form django.db import models class Book(models.Model): # 表名book,django会自动使用项目名+我们定义的 ...
随机推荐
- Mybatis-Plus 代码生成器基本使用
Mybatis-Plus 代码生成器基本使用 参考 https://mp.baomidou.com/guide/generator.html#%E4%BD%BF%E7%94%A8%E6%95%99%E ...
- zz斯坦福Jure Leskovec图表示学习:无监督和有监督方法
斯坦福Jure Leskovec图表示学习:无监督和有监督方法(附PPT下载) 2017 年 12 月 18 日 专知 专知内容组(编) 不要讲得太清楚 [导读]现实生活中的很多关系都是通过图的形式 ...
- VIJOS-P1474 雷曼兔(csapc)
JDOJ 1532: VIJOS-P1474 雷曼兔(csapc) https://neooj.com/oldoj/problem.php?id=1532 Description 这次,OI山成为了雷 ...
- js 浮点型运算出错的原因和解决方法
在工作中经常需要进行数字运算,当然也会遇到浮点型数字的运算,但是运算结果却并不是想要. 这种小孩子都会做的简单运算,强大的计算居然算算错?原来,计算机的运算都需要转成二制运算,而二进制和实现位数限制有 ...
- 【oracle】ceil函数 返回值 (大于参数的最小整数)
SELECT CEIL(15.8) FROM DUAL;==========16 SELECT CEIL(-15.8) FROM DUAL;==========-15
- pyenv python 多版本管理工具
pyenv fork 自rbenv 以及ruby-build ,然后修改为转为python 使用 venv 以及virtualenv 解决了版本选择的问题,pyenv 同时为我们解决 了python ...
- [Taro] 解决 使用 Taro UI 小程序下 Iconfont 图标 不显示问题
Taro UI 配置 第三方 的 文档 配置即可解决 https://taro-ui.jd.com/#/docs/icon 解决问题: 之前 只有在H5下 才显示 Iconfont 图标 后来按照此文 ...
- C语言实现五子棋
可以称得上史上最简单的五子棋版本了. 可以使用curses库来改进页面和下棋方式. 并且对于输入的坐标没有进行鉴别,如果输入的坐标超过棋盘大小,就会段错误退出. 我改进了一点,但是还是没有完全避免这个 ...
- portal项目启动问题
错误信息: Disconnected from the target VM, address: '127.0.0.1:58909', transport: 'socket' Process finis ...
- 推荐一款移动端小视频App声咖视频
推荐一款移动端小视频App声咖视频 1 介绍 声咖app,这款软件是一款声音交友社交软件,在上面你可以轻松互动,找到你的知心朋友,并且可以自由添加好友,与其他人互动,让交友更加轻松!, 2 特色功能介 ...