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 22 Python
python opencv 图像拼接的实现方法
Jun 27 Python
Django框架之DRF 基于mixins来封装的视图详解
Jul 23 Python
python打印直角三角形与等腰三角形实例代码
Oct 20 Python
Python3 把一个列表按指定数目分成多个列表的方式
Dec 25 Python
Pycharm中Python环境配置常见问题解析
Jan 16 Python
PyInstaller将Python文件打包为exe后如何反编译(破解源码)以及防止反编译
Apr 15 Python
python 实现仿微信聊天时间格式化显示的代码
Apr 17 Python
Python脚本实现监听服务器的思路代码详解
May 28 Python
Kears 使用:通过回调函数保存最佳准确率下的模型操作
Jun 17 Python
Win10环境中如何实现python2和python3并存
Jul 20 Python
Django与AJAX实现网页动态数据显示的示例代码
Feb 24 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
php && 逻辑与运算符使用说明
2010/03/04 PHP
PHP文章采集URL补全函数(FormatUrl)
2012/08/02 PHP
在PHP模板引擎smarty生成随机数的方法和math函数详解
2014/04/24 PHP
Laravel框架学习笔记(二)项目实战之模型(Models)
2014/10/15 PHP
PHP 读取和编写 XML
2014/11/19 PHP
php计划任务之验证是否有多个进程调用同一个job的方法
2015/12/07 PHP
php简单随机字符串生成方法示例
2017/04/19 PHP
PHP时间戳和日期相互转换操作实例小结
2018/12/18 PHP
在javascript中实现函数数组的方法
2013/12/25 Javascript
node.js中的fs.stat方法使用说明
2014/12/16 Javascript
JavaScript实现简单Tip提示框效果
2016/04/20 Javascript
jquery获取select,option所有的value和text的实例
2017/03/06 Javascript
angular2+nodejs实现图片上传功能
2017/03/27 NodeJs
在vue中添加Echarts图表的基本使用教程
2017/11/22 Javascript
jQuery实现checkbox全选功能完整实例
2018/07/12 jQuery
解决微信小程序防止无法回到主页的问题
2018/09/28 Javascript
Node.js如何对SQLite的async/await封装详解
2019/02/14 Javascript
uni-app微信小程序登录并使用vuex存储登录状态的思路详解
2019/11/04 Javascript
vue 父组件通过$refs获取子组件的值和方法详解
2019/11/07 Javascript
Vue.extend 编程式插入组件的实现
2019/11/18 Javascript
javascript中导出与导入实现模块化管理教程
2020/12/03 Javascript
[01:28]2014DOTA2国际邀请赛中国区预选赛四大豪门直升机抵达会场
2014/05/24 DOTA
[38:31]完美世界DOTA2联赛PWL S3 Magma vs GXR 第一场 12.13
2020/12/17 DOTA
Python类的多重继承问题深入分析
2014/11/09 Python
pygame游戏之旅 添加游戏介绍
2018/11/20 Python
将Python文件打包成.EXE可执行文件的方法
2019/08/11 Python
python 实现目录复制的三种小结
2019/12/04 Python
tensorflow自定义激活函数实例
2020/02/04 Python
pip已经安装好第三方库但pycharm中import时还是标红的解决方案
2020/10/09 Python
结合CSS3的布局新特征谈谈常见布局方法
2016/01/22 HTML / CSS
小学运动会广播稿200字(十二篇)
2014/01/14 职场文书
敬老月活动总结
2014/08/28 职场文书
高中课前三分钟演讲稿
2014/09/13 职场文书
2014年扶贫工作总结
2014/11/18 职场文书
少先队入队仪式主持词
2015/07/04 职场文书
党性教育心得体会(共6篇)
2016/01/21 职场文书