django 多对多表的创建和插入代码实现
作者:信奉上帝的小和尚 发布时间:2021-05-09 03:50:34
标签:django,多对多,表,创建,插入
这篇文章主要介绍了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})
来源:https://www.cnblogs.com/wtil/p/11480784.html


猜你喜欢
- 最好用的mysql密码忘记的解决方法 ,经过测试,如果不能成功一般是你的mysql运行的不正常解决办法: 在windows下:&n
- 挂载全局方法使用jsencrypt进行rsa加密原文链接:Js参数RSA加密传输,jsencrypt.js的使用 *https://www.
- 上一章节我们学习了基础的定义 PPT 的方法以及每一页中的样式,这节课我们将真正的在 PPT 中添加内容,学习一下 pptx 的段落的使用。
- python -m 和 python 的区别-m 的含义表示将库当作脚本来执行。python file.py正常的执行Python脚本似乎都
- 一、动机(Motivate)在软件构建过程中,由于需求的改变,某些类层次结构中常常需要增加新的行为(方法),如果直接在基类中做这样的更改,将
- 在外部程序访问数据库时(例如 PHP),要组织很多 SQL 语句。 特别是业务逻辑复杂的时候,一大堆的 SQL 和条件夹杂在 PHP 代码中
- 问题描述:ImportError: No module named ‘XXXX'解决方式一: 将XXXX包放在python的site
- Pygame是跨平台Python模块,专为电子游戏设计,包含图像、声音。建立在SDL基础上,允许实时电子游戏研发而无需被低级语言(如机器语言
- 前言:假设我们已经了解vue组件常见的有父子组件通信,兄弟组件通信。而父子组件通信很简单,父组件会通过 props 向下传数据给子组件,当子
- 先用最简单的三层全连接神经网络,然后添加激活层查看实验结果,最后加上批标准化验证是否有效首先根据已有的模板定义网络结构SimpleNet,命
- 使用ASP设置指定站点CPU最大使用程度'=============================================
- Python用input输入列表的方法使用input输入数据时,使用逗号隔开列表的每一项,再使用ast.literal_eval()方法转成
- 需求分析根据原始数据,计算出累计和、回撤、连续正确、连续错误、连续正确值与连续错误值6项数据,其中原始数据大于等于0认定为正确,原始数据小于
- PYTHON 操作 XML读取XML文件关于XML的介绍<data> 与 </data> 是一对标签的开始与结束&l
- 一、ts文件的由来ts文件,ts即"Transport Stream"的缩写,特点就是要求从视频流的任一片段开始都是可以
- 项目场景:Python版本:3.8因公司业务需求,须开发一套局域网内视频会议软件,此次采用Python实现此功能。程序编写完并在编译器实现此
- 1.元组的概念Python中的元组和列表很相似,元组也是Python语言提供的内置数据结构之一,可以在代码中直接使用。元组和列表就像是一个孪
- python中email模块使得处理邮件变得比较简单,今天着重学习了一下发送邮件的具体做法,这里写写自己的的心得,也请高手给些指
- 1.通过pip安装python第三方模块paramikopip install paramiko2.创建脚本##导入paramiko、tim
- 这个javascript划词搜索功能,在很多地方我们都会看到,特别是装了浏览器插件的时候,当我们用鼠标选择一段文字的时候,就会出现搜索提示,