介绍
这期内容当中小编将会给大家带来有关使用django怎么创建一个多对多表,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
<强>表的创建强>
#,作者和书籍之间的多对多关系,, class 作者(models.Model): & # 39;才能& # 39;& # 39; 作才能者表 & # 39;才能& # 39;& # 39; 时间=nid 才能;models.AutoField (primary_key=True) name 才能=,models.CharField (verbose_name=& # 39;作者名称& # 39;,max_length=32) #才能,第一种方式直接在作者表中创建ManyToManyField字段(ORM会自动帮我们创建第三张表推荐这种方式) author2books 才能=,models.ManyToManyField(=& # 39;书# 39;) class 书(models.Model): & # 39;才能& # 39;& # 39; 书才能籍名称 & # 39;才能& # 39;& # 39; 时间=nid 才能;models.AutoField (primary_key=True) title 才能=,models.CharField (verbose_name=& # 39;书本名称& # 39;,max_length=32) pid 才能=,models.ForeignKey (verbose_name=& # 39;出版社id # 39;,=& # 39;新闻# 39;,to_field=& # 39; nid& # 39;, on_delete=models.CASCADE) #,第二钟方式手动创建第三张表 #,class Books2Author (models.Model): #,,,& # 39;& # 39;& # 39; #,,,书本作者对应表 #,,,& # 39;& # 39;& # 39; #,,,nid =, models.AutoField (primary_key=True) #,,,aid =, models.ForeignKey (verbose_name=& # 39;作者id # 39;,=& # 39;作者# 39;,to_field=& # 39; nid& # 39;) #,,,bid =, models.ForeignKey (verbose_name=& # 39;书籍id # 39;,=& # 39;书# 39;,to_field=& # 39; nid& # 39;)
<强>数据的添加强>
#,编辑作者 def edit_author(请求): #,才能获取作者ID id 才能=,request.GET.get (& # 39; id # 39;) #,才能获取所有书籍 时间=books_lst 才能;models.Books.objects.all () #才能,根据作者ID 获取到作者对象 时间=author_info 才能;models.Author.objects.filter (pk=id)当代() if 才能;request.method ==, & # 39;文章# 39;: ,,,#,获取前端传过来的作者新名称 ,,,name =, request.POST.get(& # 39;名字# 39;) ,,,#,获取前端传递过来的书籍 ,,,book_lst =, request.POST.getlist(& # 39;书# 39;) ,,,#,根据新名称,更新当前名称 ,,,author_info.name =,名字 ,,,#,保存数据 ,,,author_info.save () ,,,#,设置方法会将当前作者原先的书籍全部删除,然后插入前端传递过来的书籍列表(参数为列表类型) ,,,author_info.author2books.set (book_lst) ,,,#,添加方法会将前端传递过来书籍添加到,作者和书籍的对应表中。如果插入重复记录会报错(参数为单个元素,可以插入多个) ,,,#,author_info.author2books.add (* book_lst) ,,,return 重定向(& # 39;/author_lst & # 39;) return 才能;渲染(请求,& # 39;edit_author.html& # 39;, {& # 39; books_lst& # 39;: books_lst, & # 39; author_info& # 39;: author_info})