数据库表结构生成完毕后,可以使用工具连接上去

在 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 (二) 增加操作的更多相关文章

  1. Django ORM那些相关操作zi

    Django ORM那些相关操作   一般操作 看专业的官网文档,做专业的程序员! 必知必会13条 <1> all(): 查询所有结果 <2> filter(**kwargs) ...

  2. Django ORM 多表操作

    目录 Django ORM 多表操作 表模型 表关系 创建模型 逆向到表模型 插入数据 ORM 添加数据(添加外键) 一对多(外键 ForeignKey) 一对一 (OneToOneFeild) 多对 ...

  3. Django ORM 那些相关操作

    Django ORM 那些相关操作 一般操作 必知必会13条 <> all(): #查询所有的结果 <> filter(**kwargs) # 它包含了与所给筛选条件相匹配的对 ...

  4. Django ORM那些相关操作

    一般操作 https://docs.djangoproject.com/en/1.11/ref/models/querysets/         官网文档 常用的操作 <1> all() ...

  5. Django - orm外键操作

    1.orm外键操作 创建外键: 备注:ForeignKey两个参数,1个为关联的表名,1个为关联的字段名: 在django2.0后,定义外键和一对一关系的时候需要加on_delete选项,此参数为了避 ...

  6. Django ORM多表操作

    多表操作 创建模型 实例:我们来假定下面这些概念,字段和关系 作者模型:一个作者有姓名和年龄. 作者详细模型:把作者的详情放到详情表,包含生日,手机号,家庭住址等信息.作者详情模型和作者模型之间是一对 ...

  7. django ORM单表操作

    1.ORM介绍 ORM是“对象-关系-映射”的简称 映射关系: mysql---------Python 表名----------类名 字段----------属性 表记录--------实例化对象 ...

  8. 6月21日 Django ORM那些相关操作(表关联、聚合查询和分组查询)

    一.ForeignKey操作 正向查找 对象查找(跨表) 语法: 对象.关联字段.字段   示例: book_obj = models.Book.objects.first() # 第一本书对象 pr ...

  9. Django ORM 多对多操作 使用聚合函数和分组 F查询与Q查询

    创建表 # models.py form django.db import models class Book(models.Model): # 表名book,django会自动使用项目名+我们定义的 ...

随机推荐

  1. Java链接Oracle

    首先在Navicat里面链接Oracle: 连接时老报错:ORA-12505, TNS:listener does not currently know of SID given in connect ...

  2. HttpRuntime应用程序运行时

    System.Web.HttpRuntime类是整个Asp.net服务器处理的入口. 这个类提供了一系列的静态属性,反映web应用程序域的设置信息,而且每个web应用程序域中存在一个System.We ...

  3. Failed to register dubbo:

    无法把dubbo注册到zookeeper,我的错误原因是引入的curator的版本过高,curator中会引入zookeeper,而dubbo的版本又过低,所以无法注册进zookeeper,把cura ...

  4. [LeetCode] 674. Longest Continuous Increasing Subsequence 最长连续递增序列

    Given an unsorted array of integers, find the length of longest continuous increasing subsequence. E ...

  5. [LeetCode] 454. 4Sum II 四数之和之二

    Given four lists A, B, C, D of integer values, compute how many tuples (i, j, k, l) there are such t ...

  6. 搭建 Web 网站常用技能

    为软件创建专用数据库及其账号 create database if not exists gitea default charset = utf8mb4; grant ALL PRIVILEGES o ...

  7. Casbin权限模型

    权限框架casbin1.概述Casbin是一个强大的.高效的开源访问控制框架,其权限管理机制支持多种访问控制模型. Casbin支持以下编程语言: Casbin可以做到:支持自定义请求的格式,默认的请 ...

  8. 首次体验MangoDB

    Author:SimpleWu MongoDB官方网:https://www.mongodb.com/ MongoDB中文网:http://www.mongodb.org.cn/ 什么是MongoDB ...

  9. nginx学习笔记2

    nginx基础配置 一.nginx常用命令 nginx -s reload:在nginx已经启动的情况下重新加载配置文件(平滑重启) nginx -s reopen:重新打开日志文件 nginx -c ...

  10. windbg排查线上线程数爆炸问题

    1.早上发现有个job的线程数一直居高不下 2.于是dump一个文件拉到本地,查到都在执行 StartInner方法 3.查询代码,此方法是个静态类开启线程的地方,理论上没有任何问题 4.思索了半天, ...