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实现百度关键词排名查询
Mar 30 Python
python实现的简单猜数字游戏
Apr 04 Python
python插入排序算法实例分析
Jul 03 Python
Python的Flask框架中SQLAlchemy使用时的乱码问题解决
Nov 07 Python
Python下的Softmax回归函数的实现方法(推荐)
Jan 26 Python
Python实现图片转字符画的示例代码
Aug 21 Python
Django内容增加富文本功能的实例
Oct 17 Python
Python使用re模块实现信息筛选的方法
Apr 29 Python
Python字典遍历操作实例小结
Mar 05 Python
python实现可逆简单的加密算法
Mar 22 Python
Python实现ElGamal加密算法的示例代码
Jun 19 Python
python求解汉诺塔游戏
Jul 09 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
DC动画电影《黑暗正义联盟》曝预告 5月5日上线数字平台
2020/04/09 欧美动漫
双料怀旧--SHARP GF515的维护、修理和简单调试
2021/03/02 无线电
PHP中static关键字原理的学习研究分析
2011/07/18 PHP
php实现zip压缩文件解压缩代码分享(简单易懂)
2014/05/10 PHP
php爬取天猫和淘宝商品数据
2018/02/23 PHP
PHP模型Model类封装数据库操作示例
2019/03/14 PHP
从sohu弄下来的flash中展示图片的代码
2007/04/27 Javascript
基于jquery的修改当前TAB显示标题的代码
2010/12/11 Javascript
一款Jquery 分页插件的改造方法(服务器端分页)
2011/07/11 Javascript
javascript模拟select,jselect的方法实现
2012/11/08 Javascript
深入理解JQuery循环绑定事件
2016/06/02 Javascript
JS打开摄像头并截图上传示例
2017/02/18 Javascript
JavaScript队列的应用实例详解【经典数据结构】
2017/04/12 Javascript
vue.js获取数据库数据实例代码
2017/05/26 Javascript
js中apply与call简单用法详解
2017/11/06 Javascript
Vue利用History记录上一页面的数据方法实例
2018/11/02 Javascript
小程序实现背景音乐播放和暂停
2020/06/19 Javascript
在Django的视图中使用数据库查询的方法
2015/07/16 Python
python 读写txt文件 json文件的实现方法
2016/10/22 Python
python实现多线程抓取知乎用户
2016/12/12 Python
Python书单 不将就
2017/07/11 Python
python 定义给定初值或长度的list方法
2018/06/23 Python
Python HTML解析器BeautifulSoup用法实例详解【爬虫解析器】
2019/04/05 Python
django富文本编辑器的实现示例
2019/04/10 Python
使用CSS3的appearance属性改变任何元素的浏览器默认风格
2012/12/24 HTML / CSS
html5弹跳球示例代码
2013/07/23 HTML / CSS
国际书籍零售商:Wordery
2017/11/01 全球购物
财务副总经理工作职责
2013/11/25 职场文书
软件售后服务承诺书
2014/05/21 职场文书
英文求职信范文
2014/05/23 职场文书
2014国庆节幼儿园亲子活动方案
2014/09/16 职场文书
搞笑的爱情检讨书
2014/10/01 职场文书
幸福终点站观后感
2015/06/04 职场文书
大学生读书笔记范文
2015/07/01 职场文书
2015年公司中秋节致辞
2015/07/31 职场文书
学习型家庭事迹材料(2016精选版)
2016/02/29 职场文书