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实现的jpg格式图片修复代码
Apr 21 Python
Python模块结构与布局操作方法实例分析
Jul 24 Python
Python编程二分法实现冒泡算法+快速排序代码示例
Jan 15 Python
详解python使用递归、尾递归、循环三种方式实现斐波那契数列
Jan 16 Python
python实现list由于numpy array的转换
Apr 04 Python
python学习开发mock接口
Apr 28 Python
PyQt5 多窗口连接实例
Jun 19 Python
Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法
Aug 23 Python
python数值基础知识浅析
Nov 19 Python
python 回溯法模板详解
Feb 26 Python
python爬取某网站原图作为壁纸
Jun 02 Python
python和C/C++混合编程之使用ctypes调用 C/C++的dll
Apr 29 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
建立文件交换功能的脚本(二)
2006/10/09 PHP
php中将一个对象保存到Session中的方法
2015/03/13 PHP
Javascript 读后台cookie代码
2008/09/15 Javascript
jquery tab标签页的制作
2010/05/10 Javascript
网页编辑器ckeditor和ckfinder配置步骤分享
2012/05/24 Javascript
js形成页面的一种遮罩效果实例代码
2014/01/04 Javascript
Javascript高级技巧分享
2014/02/25 Javascript
js 日期比较相关天数代码
2014/04/02 Javascript
举例讲解Node.js中的Writable对象
2015/07/29 Javascript
学习Bootstrap滚动监听 附调用方法
2016/07/02 Javascript
JavaScript使用delete删除数组元素用法示例【数组长度不变】
2017/01/17 Javascript
js评分组件使用详解
2017/06/06 Javascript
详解Vue整合axios的实例代码
2017/06/21 Javascript
Javascript实现时间倒计时效果
2017/07/15 Javascript
node 利用进程通信实现Cluster共享内存
2017/10/27 Javascript
github配置使用指南
2014/11/18 Python
Python isinstance函数介绍
2015/04/14 Python
django项目简单调取百度翻译接口的方法
2019/08/06 Python
如何把python项目部署到linux服务器
2020/08/26 Python
用python写一个带有gui界面的密码生成器
2020/11/06 Python
python drf各类组件的用法和作用
2021/01/12 Python
CSS3弹性盒模型开发笔记(三)
2016/04/26 HTML / CSS
Html5游戏开发之乒乓Ping Pong游戏示例(三)
2013/01/21 HTML / CSS
加拿大国民体育购物网站:National Sports
2018/11/04 全球购物
PHP如何自定义函数
2016/09/16 面试题
北大研究生linux应用求职信
2013/10/29 职场文书
工作自荐信
2013/12/11 职场文书
考试退步检讨书
2014/01/15 职场文书
自荐书4要点
2014/01/25 职场文书
飘柔洗发水广告词
2014/03/14 职场文书
音乐教师个人工作总结
2015/02/06 职场文书
水电工程师岗位职责
2015/02/13 职场文书
小学毕业教师寄语
2019/06/21 职场文书
python urllib库的使用详解
2021/04/13 Python
解决pytorch读取自制数据集出现过的问题
2021/05/31 Python
Python使用openpyxl批量处理数据
2021/06/23 Python