一: 一对多

  1. 一对多新增

两种方式:  publish = 对象    publish_id = id

  1. publish_id 和 publish 的区别就是:
    1)publish_id 可以手动输入要查询的书籍的出版社 如: 方式一
    2)publish 要查询书籍出版社需要从数据库中取出出版社对象, 如: 方式二

# 一对多新增数据
# 添加一本北京出版社出版的书
# 方式一
ret = Book.objects.create(name='妈妈再爱我一次', price=25, publish_id=1)
print(ret.name) # 方式二, 存对象publish=出版社的对象,存到数据库,是一个id
# publish=Publish.objects.get(id=2)
# publish=Publish.objects.get(pk=2)
# pk 和 id 的作用一样,都是主键,可以通过主键查找,主键只有一个
# 如果用filter 必须在后面加一个 .first()
publish = Publish.objects.filter(pk=2).first() # 从数据里面取出出版社对象
ret = Book.objects.create(name='爸爸再爱我一次', price=35, publish=publish)
print(ret.name)

 2. 一对多修改: 学习了单表操作,新增数据这一些,和修改数据是一个意思

# 一对多修改数据
# 方式一:
book = Book.objects.get(pk=1)
# book.publish=出版社对象
book.publish_id = 2
book.save() # 方式二
# book=Book.objects.filter(pk=1).update(publish=出版社对象)
# book=Book.objects.filter(pk=1).update(publish_id=1)

  3. 一对多删除: 删除数据就是直接删除就可以了,不过删除大数据要谨慎,能虚就虚,不然就要删库跑路了

二: 多对多

  - 多对多常用的API

    # book_obj.authors.add() 添加
# book_obj.authors.remove() 特定的关联对象从集合中去除, 比如说,移除某书籍的作者
# book_obj.authors.clear() 清空所有书籍的作者
# book_obj.authors.set() 先清空,再设置

 1. 多对多新增,add

 # 多对多新增(书籍跟作者的关系)
# 1. 为妈妈再爱我一次这本书新增一个叫prince, bp 的作者
# prince = Author.objects.filter(name='prince').first() # 拿到作者这个对象
# bp = Author.objects.filter(name='bp').first() # 新增两个作者
book = Book.objects.filter(name='妈妈再爱我一次').first() # 要新增就要查到这本书
# add 添加多个对象 对象用逗号隔开
# book.author.add(prince, bp) # 书籍表的authors
# add 添加作者id
book.author.add(1, 2)

 2. 多对多删除,remove

    # 多对多新增(书籍跟作者的关系)
# prince = Author.objects.filter(name='prince').first() # 拿到作者这个对象
# book = Book.objects.filter(name='妈妈再爱我一次').first() # 要新增就要查到这本书
# # 删除 remove ,可以传对象, 可以传id, 也可以传多个,但不要混着用
# 删除一个叫prince的作者
# book.author.remove(prince)
# book.author.remove(2)
book.author.remove(1, 2)

3. 清空, clear

 # 清空 clear,清空所有,不需要传参数
book.author.clear()

4. 先清空, 在新增 set

 # 先清空,在新增 set ,
book.author.set(2) # 注意: 这样是错误的, 打印时会出现 TypeError: 'int' object is not iterable 这样的错误, 我们必须传一个可迭代的对象出来, 改成下面这样,就可以了
# 要传一个列表,列表内可以是id, 也可以是对象
book.author.set([2, ])

2.

2.

2.

Django day08 多表操作 (二) 添加表记录的更多相关文章

  1. {django模型层(二)多表操作}一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询、分组查询、F查询和Q查询

    Django基础五之django模型层(二)多表操作 本节目录 一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询.分组查询.F查询和Q查询 六 xxx 七 ...

  2. 百万年薪python之路 -- MySQL数据库之 MySQL行(记录)的操作(二) -- 多表查询

    MySQL行(记录)的操作(二) -- 多表查询 数据的准备 #建表 create table department( id int, name varchar(20) ); create table ...

  3. Excel:一维表和二维表 互转

    一.一维表转二维表 数据源: 一份流水账式的值班表,为了便于打印张贴,现在需要使其变成这样的样式: 也就是从一维表变成传说中的二维表. 1.新建查询 依次单击[数据]→[新建查询] →[从文件]→[从 ...

  4. linux 进阶2--C++读取lua文件中的变量、一维表、二维表

    lua 语言非常灵活,一般把lua 作为脚本文件,会用C++与之进行交互.最重要的是C++代码能读取到脚本中的变量.一维表.二维表. 这样有些参数就可以在lua文件进行更改,而不用重新更改C++代码. ...

  5. Django day08 多表操作 (一) 多表模型创建

    多表模型创建分析:1)作者表:一个作者有姓名和年龄2)作者信息表: 有作者就有信息,点击作者的名字可以查询他的电话和地址, 作者表对应作者信息表,所以他们之间是一对一对的关系3)出版社表: 出版社有对 ...

  6. Django学习笔记(7)——单表操作和多表操作

    单表操作 1,创建模型 创建名为book的APP,在book下的models.py中创建模型: from django.db import models # Create your models he ...

  7. 09 ORM 多表操作,创建表,添加记录

    1.数据库表关系 1.一对多 为什么需要,重复字段太多 一对多关系表 Book id title price publish_id 1 python 100 1 2 php 200 2 3 go 10 ...

  8. Django模型层:单表操作,多表操作,常用(非常用)字段和参数,Django-model进阶

    一.web应用 二.模板的导入与继承 三.静态文件相关 四.inclusion_tag:返回html片段 五.模型层 一.web应用 -s包括两个部分:web服务器+application -目前阶段 ...

  9. Django之model联表:一对多、跨表操作,联表查询

    表结构概述 model.py : class Something(models.Model): name = models.CharField(max_length=32) class UserTyp ...

随机推荐

  1. C# Winform 获得下拉框 选中的值

    string PrintName = cmbPrinter.SelectedIndex.ToString(); PrintName = cmbPrinter.SelectedItem.ToString ...

  2. BZOJ 4520: [Cqoi2016]K远点对 KDtree + 估价函数 + 堆

    Code: #include<bits/stdc++.h> #define ll long long #define maxn 200000 #define inf 10000000000 ...

  3. 关于JS闭包的一点理解

    通常来讲,闭包通常是指函数内部可以访问到外部作用域的一个过程. 一.广义的定义:任何函数都产生了闭包. 二.狭义的定义:函数内部能访问到其他变量函数的作用域. 我们来看个例子 var a = 10; ...

  4. 【LeetCode】1、Two Sum

    题目等级:Easy 题目描述:   Given an array of integers, return indices of the two numbers such that they add u ...

  5. Django - Ajax初识

    当需要在弹出的对话框中,做判断操作时,需要用到ajax 1.host.html <!DOCTYPE html><html lang="en"><hea ...

  6. Django-----中间件Cookie

    Cookie: 用来跟踪用户的会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份. Cookie机制 ...

  7. 从NLP任务中文本向量的降维问题,引出LSH(Locality Sensitive Hash 局部敏感哈希)算法及其思想的讨论

    1. 引言 - 近似近邻搜索被提出所在的时代背景和挑战 0x1:从NN(Neighbor Search)说起 ANN的前身技术是NN(Neighbor Search),简单地说,最近邻检索就是根据数据 ...

  8. zabbix 配置——bak

    1.host 配置 create host Parameter Description Host name 主机名,只允许数字,空格,句号,下划线,非主流符号它不支持.zabbix客户端配置文件中的h ...

  9. 该页必须使用安全性较高的Web 浏览器查看

    当用https访问某个网站时,IE提醒“该页必须使用安全性较高的Web 浏览器查看” 您要访问的资源使用了128位版本的“安全套接层(SSL)” 安全保护.要查看该资源,您需要使用支持该版本的SSL浏 ...

  10. 【codeforces 527B】Error Correct System

    [题目链接]:http://codeforces.com/contest/527/problem/B [题意] 给你两个字符串; 允许你交换一个字符串的两个字符一次: 问你这两个字符串最少会有多少个位 ...