django 多对多表的创建和插入代码实现


Posted in Python onSeptember 09, 2019

这篇文章主要介绍了django-多对多表的创建和插入代码实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

表的创建

# 作者和书籍之间的多对多关系  
class Author(models.Model):
  '''
  作者表
  '''
  nid = models.AutoField(primary_key=True)
  name = models.CharField(verbose_name='作者名称',max_length=32)
  # 第一种方式直接在作者表中创建ManyToManyField字段(ORM会自动帮我们创建第三张表推荐这种方式)
  author2books = models.ManyToManyField(to='Books')
class Books(models.Model):
  '''
  书籍名称
  '''
  nid = models.AutoField(primary_key=True)
  title = models.CharField(verbose_name='书本名称',max_length=32)
  pid = models.ForeignKey(verbose_name='出版社ID',to='Press',to_field='nid',on_delete=models.CASCADE)
# 第二钟方式手动创建第三张表
# class Books2Author(models.Model):
#   '''
#   书本作者对应表
#   '''
#   nid = models.AutoField(primary_key=True)
#   aid = models.ForeignKey(verbose_name='作者ID',to='Author',to_field='nid')
#   bid = models.ForeignKey(verbose_name='书籍ID',to='Books',to_field='nid')

数据的添加

# 编辑作者
def edit_author(request):
  # 获取作者ID 
  id = request.GET.get('id')
  # 获取所有书籍
  books_lst = models.Books.objects.all()
  # 根据作者ID 获取到作者对象
  author_info = models.Author.objects.filter(pk=id).first()
  if request.method == 'POST':
    # 获取前端传过来的作者新名称
    name = request.POST.get('name')
    # 获取前端传递过来的书籍
    book_lst = request.POST.getlist('books')
    # 根据新名称,更新当前名称
    author_info.name = name
    # 保存数据
    author_info.save()
    # set方法会将当前作者原先的书籍全部删除,然后插入前端传递过来的书籍列表(参数为list类型)
    author_info.author2books.set(book_lst)
    # add方法会将前端传递过来书籍添加到 作者和书籍的对应表中。如果插入重复记录会报错(参数为单个元素,可以插入多个)
    # author_info.author2books.add(*book_lst)
    return redirect('/author_lst/')
  return render(request,'edit_author.html',{'books_lst':books_lst,'author_info':author_info})

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

Python 相关文章推荐
浅谈Python的文件类型
May 30 Python
浅谈numpy生成数组的零值问题
Nov 12 Python
python使用magic模块进行文件类型识别方法
Dec 08 Python
详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
Feb 25 Python
Django框架视图层URL映射与反向解析实例分析
Jul 29 Python
python3 实现的对象与json相互转换操作示例
Aug 17 Python
python使用pygame实现笑脸乒乓球弹珠球游戏
Nov 25 Python
python实现拼图小游戏
Feb 22 Python
python Canny边缘检测算法的实现
Apr 24 Python
Python模拟登入的N种方式(建议收藏)
May 31 Python
python中lower函数实现方法及用法讲解
Dec 23 Python
jupyter notebook指定启动目录的方法
Mar 02 Python
Python中的单下划线和双下划线使用场景详解
Sep 09 #Python
python 批量修改 labelImg 生成的xml文件的方法
Sep 09 #Python
Python定时发送天气预报邮件代码实例
Sep 09 #Python
python英语单词测试小程序代码实例
Sep 09 #Python
Python实现TCP通信的示例代码
Sep 09 #Python
Python3使用PySynth制作音乐的方法
Sep 09 #Python
python智联招聘爬虫并导入到excel代码实例
Sep 09 #Python
You might like
咖啡豆的最常见发酵处理方法,详细了解一下
2021/03/03 冲泡冲煮
php简单实现文件或图片强制下载的方法
2016/12/06 PHP
php使用PDO事务配合表格读取大量数据插入操作实现方法
2017/02/16 PHP
ThinkPHP5 框架引入 Go AOP,PHP AOP编程项目详解
2020/05/12 PHP
短信提示使用 特效
2007/01/19 Javascript
网页实时显示服务器时间和javscript自运行时钟
2014/06/09 Javascript
javascript实现随机显示星星特效
2016/01/28 Javascript
深入浅析Nodejs的Http模块
2017/06/20 NodeJs
创建简单的node服务器实例(分享)
2017/06/23 Javascript
checkbox:click事件触发span元素内容改变的方法
2017/09/11 Javascript
深入浅析ES6 Class 中的 super 关键字
2017/10/20 Javascript
使用Vuex实现一个笔记应用的方法
2018/03/13 Javascript
vue中input的v-model清空操作
2019/09/06 Javascript
vue实现element表格里表头信息提示功能(推荐)
2019/11/20 Javascript
解决父组件将子组件作为弹窗调用只执行一次created的问题
2020/07/24 Javascript
Vue环境搭建+VSCode+Win10的详细教程
2020/08/19 Javascript
Python的批量远程管理和部署工具Fabric用法实例
2015/01/23 Python
Python读取excel指定列生成指定sql脚本的方法
2018/11/28 Python
python爬虫租房信息在地图上显示的方法
2019/05/13 Python
Python占用的内存优化教程
2019/07/28 Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
2019/08/26 Python
Django项目基础配置和基本使用过程解析
2019/11/25 Python
python求绝对值的三种方法小结
2019/12/04 Python
Python坐标轴操作及设置代码实例
2020/06/04 Python
世界上最大的皮肤科医生拥有和经营的美容网站:LovelySkin
2021/01/03 全球购物
中秋节礼品促销方案
2014/02/02 职场文书
人力资源部经理助理岗位职责
2014/03/04 职场文书
领导班子四风对照检查材料思想汇报
2014/09/26 职场文书
单位委托函范文
2015/01/29 职场文书
大学生个人简历自我评价
2015/03/11 职场文书
新员工辞职信范文
2015/05/12 职场文书
社区安置帮教工作总结2015
2015/05/20 职场文书
python数据库批量插入数据的实现(executemany的使用)
2021/04/30 Python
MYSQL主从数据库同步备份配置的方法
2021/05/26 MySQL
使用Oracle命令进行数据库备份与还原
2021/12/06 Oracle
浅谈为什么我的 z-index 又不生效了
2022/07/15 HTML / CSS